使用正则表达式,从网站上获取指定数据

news/2024/5/9 10:16:23/文章来源:https://blog.csdn.net/weixin_34043301/article/details/92186712

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

       最近做的一个项目中,其中有这样一个需求:用户要求我们实时在地图上显示某些指定景点的人数,但是却没有给我们数据的接口。不过可以从网页上获取到最新的数据,每小时更新一次。所以经理安排我做一个实时从网页上抓取数据的功能。

       既然是网页,那么无用的数据肯定是非常多的,所以就需要用正则表达式来过滤出自己所需要的数据。

       不得不说,正则表达式比substring好用多了,而且效率也很不错。下面来分享一下我的这段代码吧:

/*** 从网站获取日期信息* * @Title: getDate* @Date : 2014-8-12 上午09:42:26* @return*/private String getDate() {// 从网站抓取数据String table = catchData();String date = "";// 使用正则表达式,获取对应的数据Pattern places = Pattern.compile("(<p align=\"center\">)([^\\s]*)");Matcher matcher = places.matcher(table);while (matcher.find()) {System.out.println(matcher.group(2));date = matcher.group(2);}return date;}/*** 从网站抓取数据(未经处理)* * @Title: getData* @Date : 2014-8-12 上午09:34:30* @return*/@SuppressWarnings("unchecked")private String catchData() {String table = "";try {Map map = new HashMap();map.put("a", "1");// 莫删,否则报错table = AsyncRequestUtil.getJsonResult(map, "http://s.visitbeijing.com.cn/flow.php");} catch (Exception e) {e.printStackTrace();}return table;}

【AsyncRequestUtil.java】

package com.zhjy.zydc.util;import java.util.Map;/*** 异步请求数据* @author  	: Cuichenglong* @group   	: tgb* @Version 	: 1.00* @Date    	: 2014-5-28 上午09:54:20*/
public class AsyncRequestUtil {/*** 异步请求数据* @Title: getJsonResult* @param map* @param strURL* @return*/public static String getJsonResult(Map<String, Object> map, String strURL)throws Exception {/** 跨域登录,获取返回结果  **/String result = null;result = UrlUtil.getDataFromURL(strURL, map);if (result!=null && result.startsWith("null{")) {result = result.substring("null".length());}return result;}}
UrlUtil .java
package com.zhjy.zydc.util;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;/*** url跨域获取数据* @author  	: Cuichenglong* @group   	: Zhong Hai Ji Yuan* @Version 	: 1.00* @Date    	: 2014-5-27 下午04:14:26*/
public final class UrlUtil {/*** 根据URL跨域获取输出结果* @Title: getDataFromURL* @param strURL 要访问的URL地址* @param param 参数* @return 结果字符串* @throws Exception*/public static String getDataFromURL(String strURL, Map<String, Object> param) throws Exception{URL url = new URL(strURL);URLConnection conn = url.openConnection();conn.setDoOutput(true);	conn.setConnectTimeout(5000); //允许5秒钟的延迟:连接主机的超时时间(单位:毫秒)conn.setReadTimeout(5000); //允许5秒钟的延迟 :从主机读取数据的超时时间(单位:毫秒)OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());final StringBuilder sb = new StringBuilder(param.size() << 4); // 4次方final Set<String> keys = param.keySet();for (final String key : keys) {Object value = param.get(key);sb.append(key); // 不能包含特殊字符sb.append('=');//如果格式为String类型,则进行2次解码、2次编码操作if (value instanceof String) // String{
//				value = (URLDecoder.decode(URLDecoder.decode((String)value, "utf-8"),
//						"utf-8"));
//				value = (Object)(URLEncoder.encode(URLEncoder.encode((String)value, "utf-8"),
//						"utf-8"));value = URLEncoder.encode((String)value, "utf-8");}sb.append(value);sb.append('&');}// 将最后的 '&' 去掉sb.deleteCharAt(sb.length() - 1);// writer.write("email=pk3589@163.com&password=123");writer.write(sb.toString());writer.flush();writer.close();InputStreamReader reder = new InputStreamReader(conn.getInputStream(), "utf-8");BufferedReader breader = new BufferedReader(reder);// BufferedWriter w = new BufferedWriter(new FileWriter("d:/1.txt"));String content = null;String result = null;while ((content = breader.readLine()) != null) {result += content;}return result;}
}
       这是一段很简单的代码。是从http://s.visitbeijing.com.cn/flow.php网址中抓取日期的代码。

       其实只有2步,第一步是通过java.net.URL后台访问指定网址,并且拿到页面的html源码。第二步从html源码中通过正则表达式,获取日期。这里说一下正则表达式:

Pattern places = Pattern.compile("(<p align=\"center\">)([^\\s]*)");

       其中^表示屏蔽,\s表示空格,所以^\\s表示屏蔽空格,这里第一个\是转移字符。*表示匹配多个字符。

       通过matcher,获取匹配的值。在一次matcher.find()获取每一次匹配的数据,一个括号对应一个group。如果取matcher.group(1),则会取到<p align="center">。matcher.group(2)可以取到匹配的值。

      了解了这些,我们就可以随意的从某些网址上抓取数据了。有了数据,还有什么可以挡住我们前进的脚步!!!

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://my.oschina.net/u/2260184/blog/518455

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_732567.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IIS搭建本地服务器,花生壳实现外网通过域名访问网站

配置服务器     作为一个青年&#xff0c;没有实力&#xff0c;做不出标图所示的服务器。 作为一个学生&#xff0c;买不起服务器 作为一个小孩&#xff0c;买不起域名 但别忘了 作为一个平民玩家&#xff0c;只要有耐心 装备迟早会做出来的 &#xff08;注&#xff1a;感觉…

api和restful_RESTful API和网站位于同一URL中

api和restful例如&#xff0c;查看Github RESTful API。 要获取有关存储库的信息&#xff0c;您应该向api.github.com/repos/yegor256/rultor发出GET请求。 作为响应&#xff0c;您将获得一个JSON文档&#xff0c;其中yegor256/rultor存储库的所有详细信息。 尝试一下&#xff…

高扩展性网站的原则

高扩展性网站的原则 本文转自被遗忘的博客园博客&#xff0c;原文链接&#xff1a;http://www.cnblogs.com/rollenholt/p/4445248.html&#xff0c;如需转载请自行联系原作者

zabbix web 监控 https网站

2019独角兽企业重金招聘Python工程师标准>>> 由于工作需要&#xff0c;通过WEB监控HTTPS网站&#xff0c;是否能访问。在配置界面上对网站认证&#xff0c;不需要勾选SSL。因为&#xff0c;实际通过curl访问&#xff0c;而CURL访问https网站是通过-k参数访问的&…

万网免费主机wordpress快速建站教程-万网主机申请

很多小伙伴在万网的免费主机申请活动中建立起了自己的个人网站&#xff0c;但还是还有许多小伙伴现在想建站&#xff0c;却发现官网找不到免费主机的申请地址了&#xff0c;以为活动结束了&#xff1f;其实还是可以继续申请免费主机的&#xff0c;接下来小编给大家介绍如何获取…

使用Windows Server 2003搭建一个asp+access网站

鼠标右键->新建->网站->下一步->描述(随便给一个&#xff0c;这里我以test为例) ->下一步->下一步->输入主目录的路径&#xff0c;默认路径下是C:\Inetpub\wwwroot->下一步->下一步->完成 当前已创建好网站&#xff0c;默认是停止状态的(因为默认…

Axure原型绘制篇(一)如何设计一款产品网站

2019独角兽企业重金招聘Python工程师标准>>> 很感谢开源中国这个平台能提供这样一个技术性的场地&#xff0c;供技术爱好者们勇往直前的学习。下面给大家讲述一下作为一个技术人员的转型史&#xff08;工作经验&#xff09;&#xff0c;百转千回最后到了产品&#x…

【转】 普及下网站前端知识【局域网、公网、混合网络】站点监测(上篇)

针对web前端的性能&#xff0c;一时间不知道入手的同学&#xff0c;可以看看&#xff1a;前端性能测试对象&#xff1a;HTML、CSS、JS、AJAX等前端技术开发的Web页面影响用户浏览网页速度的因素&#xff1a;服务端数据返回、网络传输、页面渲染&#xff0c;页面资源结构等前端性…

jekyll静态博客主题_静态网站生成器枪战– JBake vs Jekyll

jekyll静态博客主题今年早些时候&#xff0c;我一直在尝试使用静态网站生成器。 我最终的目标是将这个博客以及其他一些博客转移到静态站点中。 经过一些实验&#xff0c;我的结论是可以预见的。 询问任何一个要使用博客的软件。 大多数人会立即建议WordPress 。 最长的时间&…

通过互动课程网站magic sandbox学习kubernetes:1.1入门magic sandbox及service概念整理

kubernetes互动课程学习 标签&#xff1a;kubernetes 实践 在师兄的介绍下发现了神奇的awesome-kubernetes&#xff0c;里面有着很多的资源&#xff0c;其中之一就是非常有趣的interactive learning environments。其实官方英文教程里面也有一些简单的H5互动模块&#xff0c;…

【程序员节特别推送】搭建一个与技术无关的博客网站(Java后台)

文章目录沉晓s Blog一、博客概述二、需求与功能三、开发介绍四、关于部署五、关于项目本身六、我与CSDN沉晓’s Blog 一、博客概述 ? 项目背景 我一直追求着一种纯粹&#xff0c;写技术博客&#xff0c;就好好地写&#xff0c;心无旁骛。 我目前唯一写作的平台就是CSDN&am…

LAMP环境搭建实现网站动静分离[转]

目录&#xff1a; 1、环境概述 2、动静分离拓扑图 3、各服务器功能规划 4、各服务器基础环境配置 5、httpd安装配置 6、php安装配置及启用opcache加速功能 7、mysql安装配置 8、wordpress论坛程序安装测试 9、CA证书服务器及ssl配置 10、phpmyadmin安装测试 11、php的opcache加…

Slog34_支配vue框架初阶项目之博客网站-注册页面-前后端的数据交互

ArthurSlogSLog-34Year1GuangzhouChinaAug 10th 2018GitHub掘金主页简书主页segmentfault沉睡的狮子 即将醒来 而世界将为之震撼 开发环境MacOS(High Sierra 10.13.5) 需要的信息和信息源&#xff1a; HTTP概述HTTP互联网是如何工作的万维网是如何工作的统一资源定位符(URL)什么…

浅谈web网站架构演变过程

原文:浅谈web网站架构演变过程前言 我们以javaweb为例&#xff0c;来搭建一个简单的电商系统&#xff0c;看看这个系统可以如何一步步演变。 该系统具备的功能&#xff1a;用户模块&#xff1a;用户注册和管理商品模块&#xff1a;商品展示和管理交易模块&#xff1a;创建交易和…

网站备案知多少

网站备案知多少 DBAplus社群 2016-09-13 21:00:13 首先谈谈为什么要备案据工信部规定&#xff0c;使用大陆境内服务器的组织或个人&#xff0c;若要使用独立域名开办网站 &#xff0c;就需要履行备案手续。就像开公司要去工商局申请执照一样&#xff0c;在国内&#xff0c;没有…

GoTxt网页内容提取器,可提取小说网,360doc网站的文字

为什么80%的码农都做不了架构师&#xff1f;>>> 以前写的一个网站文本提取器&#xff0c;很粗的&#xff0c;最近没时间改&#xff0c;把源码和jar文件分享出来 程序运行截图&#xff1a; 代码地址&#xff1a;https://github.com/doobo/GoTxt 转载于:https://my.o…

大型分布式网站架构技术总结:高性能+高可用+可扩展+可伸缩架构

本文是大型分布式网站架构的技术总结&#xff0c;文末有分布式架构设计33精讲资料~ 一、大型网站架构特点 用户多&#xff0c;分布广泛 大流量&#xff0c;高并发 海量数据&#xff0c;服务高可用 安全环境恶劣&#xff0c;易受网络攻击 功能多&#xff0c;变更快&#xff0c;频…

邪恶花网站邪恶花_相关的子查询是“邪恶的”和“缓慢的”。 还是他们?

邪恶花网站邪恶花SQL中一个常见的神话是&#xff0c;相关子查询是邪恶且缓慢的。 例如&#xff0c;此查询在这里&#xff1a; SELECT first_name, last_name,(SELECT count(*) FROM film_actor fa WHERE fa.actor_id a.actor_id) FROM actor a它“强制”数据库引擎运行以下形…

如何把自己的wordpress网站移到本地修改

有时候wordpress更换模板时&#xff0c;需要修改的地方很多&#xff0c;而且在线修改不是很好。只能把它移动到电脑本地进行修改了。这样修改好就可以直接套用到网站上了。 1、通过服务器控制面板或FTP整站打包&#xff0c;发送到你已经在电脑本地搭建ApachePHPMySQL环境的网站…

网站pv uv 停留时间 等统计

为什么80%的码农都做不了架构师&#xff1f;>>> 日志中心收集网站访问数据内容 基于nginx记录用户cookie的行为&#xff0c;进行分析 一、用户cookie。 需要创建3个cookie文件_gtra、_gtrb、_gtrc&#xff0c;其中_gtra用来追踪用户&#xff0c;_gtrb和_gtrc联合来…