Java 创建WebServicejava+Jsoup 正则过滤html网页标签【多线程数据采集之二】

简介:

java采集数据,获取了 html整个文本之后。 

该考虑的是如何过滤掉html标签, 得到自己所需要的重要数据了。

实现方法有多种办法,第一:用正则,第二:用第三方jar包,其实本质也是封装了正则表达式

今天就以 Jsoup 第三方jar包来讲解。

jsoup详细资料:http://blog.csdn.net/yjflinchong/article/details/7743995

转载注明出处:http://blog.csdn.net/column/details/threadgrab.html

现在贴上一个网页过滤的方法实例

//门票浏览  url参数 http://www.lvmama.com/dest/lantiancheng 	public static DataBean getWebData1(String url){ 		DataBean data = null; 		try { 			Document docdata = Jsoup.connect(url).timeout(20000).get(); 			String id = ".quick-menu .last a"; 			String city = ".proDetail a"; 			String title = ".proDetail h1"; 			String content = "#Introduction"; 			Elements ele = docdata.select(city); 			city = (ele.text());  			ele = docdata.select(title); 			title = (ele.text()).replace("<", "").replace(">", "").replace("\\/", ""); 			ele = docdata.select(content); 			content = (ele.text()); 			ele = docdata.select(id); 			String[] idary = ele.attr("href").split("\\/"); 			id = idary[idary.length-1]; 			String type = "景点门票";  			List<String> images = new ArrayList<String>(); 			data = new DataBean(id,title,url,content,type,city,images); 			Dom4jUtil.createFile("data/["+type+"]"+title+".xml", Dom4jUtil.createDocument(data)); 			 			type = "景点评论"; 			content = ".userComments dl dd:eq(3)"; 			ele = docdata.select(content); 			content = ""; 			int i = 1; 			for (Element el : ele) { 				content += ("|第"+i+":"+el.text()); 				i++; 			} 			data = new DataBean(id,title,url,content,type,city,images); 			//用xml存储数据 			Dom4jUtil.createFile("data/["+type+"]"+title+".xml", Dom4jUtil.createDocument(data)); 		} catch (Exception e) { 			e.printStackTrace(); 		} 		return data; 	}

整个过程分为几部

1、 获取页面的节点对象

Document docdata = Jsoup.connect(url).timeout(20000).get();
七七八八网http://www.qi788.com

2、创建选择器,选择页面节点对象的 text 或 html  。 选择方式跟jquery非常类似。

例如:

String title = ".proDetail h1";

ele = docdata.select(title);

这个就是用来选择 class = proDetail  下  h1 标签的对象。通过  ele.text()   就得到了标签中的文本。

Document docdata = Jsoup.connect(url).timeout(20000).get(); 			String id = ".quick-menu .last a"; 			String city = ".proDetail a"; 			String title = ".proDetail h1"; 			String content = "#Introduction"; 			Elements ele = docdata.select(city); 			city = (ele.text());  			ele = docdata.select(title); 			title = (ele.text()).replace("<", "").replace(">", "").replace("\\/", ""); 			ele = docdata.select(content); 			content = (ele.text()); 			ele = docdata.select(id); 			String[] idary = ele.attr("href").split("\\/"); 			id = idary[idary.length-1];

3、通过获取的数据,构造java数据对象 。 然后存入xml或txt文件。 如果有需要也可以存入数据库啦。

String type = "景点门票";  			List<String> images = new ArrayList<String>(); 			data = new DataBean(id,title,url,content,type,city,images); 			Dom4jUtil.createFile("data/["+type+"]"+title+".xml", Dom4jUtil.createDocument(data));

走完这3部,就算是从html源代码文件中取到了 我们需要的数据了。

转载注明出处:http://blog.csdn.net/yjflinchong

java采集数据过滤html标签,获取指定数据,就搞定了







      本文转自yjflinchong 51CTO博客,原文链接:http://blog.51cto.com/yjflinchong/1164999,如需转载请自行联系原作者



相关文章
|
1月前
|
数据采集 Java API
Jsoup库能处理多线程下载吗?
Jsoup库能处理多线程下载吗?
|
7月前
|
XML Java 数据格式
必知的技术知识:java基础73dom4j修改xml里面的内容(网页知识)
必知的技术知识:java基础73dom4j修改xml里面的内容(网页知识)
46 1
|
4月前
|
XML JavaScript Java
NekoHTML 是一个基于Java的HTML扫描器和标签补全器
**NekoHTML** 是一个基于Java的HTML扫描器和标签补全器(tag balancer),由J. Andrew Clark开发。它主要用于解析HTML文档,并能够“修正”许多在编写HTML文档过程中常犯的错误,如增补缺失的父元素、自动用结束标签关闭相应的元素,以及处理不匹配的内嵌元素标签等。这使得程序能够以标准的XML接口来访问HTML文档中的信息。 ### NekoHTML的主要特点包括: 1. **错误修正**:能够自动修正HTML中的常见错误,如未闭合的标签等。 2. **DOM树生成**:将HTML源代码转化为DOM(Document Object Model)结构,便
|
5月前
|
缓存 前端开发 Java
【Azure 应用服务】App Service 使用Tomcat运行Java应用,如何设置前端网页缓存的相应参数呢(-Xms512m -Xmx1204m)?
【Azure 应用服务】App Service 使用Tomcat运行Java应用,如何设置前端网页缓存的相应参数呢(-Xms512m -Xmx1204m)?
|
7月前
|
Java 机器人 API
JAVA实现自动打开URL对应的网页并保存为图片-不借助第三方API
JAVA实现自动打开URL对应的网页并保存为图片-不借助第三方API
53 9
|
7月前
|
Java Maven
Java在线预览(word转html)--强势推荐
Java在线预览(word转html)--强势推荐
184 0
|
7月前
|
前端开发 JavaScript Java
计算机Java项目|网页时装购物系统
计算机Java项目|网页时装购物系统
|
7月前
|
XML Java 程序员
Java SpringMVC实现PC端网页微信扫码支付完整版
Java SpringMVC实现PC端网页微信扫码支付完整版
268 0
|
XML Java 数据格式
java使用jsoup时绕过https证书验证
java使用jsoup时绕过https证书验证
1387 0
|
4天前
|
监控 Java
java异步判断线程池所有任务是否执行完
通过上述步骤,您可以在Java中实现异步判断线程池所有任务是否执行完毕。这种方法使用了 `CompletionService`来监控任务的完成情况,并通过一个独立线程异步检查所有任务的执行状态。这种设计不仅简洁高效,还能确保在大量任务处理时程序的稳定性和可维护性。希望本文能为您的开发工作提供实用的指导和帮助。
42 17
下一篇
开通oss服务