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月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
148 2
|
1月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
166 1
|
2月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
Java 数据库 Spring
138 0
|
2月前
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
224 16
|
3月前
|
缓存 并行计算 安全
关于Java多线程详解
本文深入讲解Java多线程编程,涵盖基础概念、线程创建与管理、同步机制、并发工具类、线程池、线程安全集合、实战案例及常见问题解决方案,助你掌握高性能并发编程技巧,应对多线程开发中的挑战。
|
3月前
|
数据采集 存储 前端开发
Java爬虫性能优化:多线程抓取JSP动态数据实践
Java爬虫性能优化:多线程抓取JSP动态数据实践
|
4月前
|
Java API 调度
从阻塞到畅通:Java虚拟线程开启并发新纪元
从阻塞到畅通:Java虚拟线程开启并发新纪元
355 83
|
4月前
|
安全 算法 Java
Java 多线程:线程安全与同步控制的深度解析
本文介绍了 Java 多线程开发的关键技术,涵盖线程的创建与启动、线程安全问题及其解决方案,包括 synchronized 关键字、原子类和线程间通信机制。通过示例代码讲解了多线程编程中的常见问题与优化方法,帮助开发者提升程序性能与稳定性。
201 0
|
4月前
|
存储 Java 调度
Java虚拟线程:轻量级并发的革命性突破
Java虚拟线程:轻量级并发的革命性突破
331 83

热门文章

最新文章