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
Java并发编程:深入理解线程池
【5月更文挑战第26天】本文将深入探讨Java并发编程中的一个重要概念——线程池。我们将了解线程池的基本概念,它的工作原理,以及如何在Java中使用线程池。此外,我们还将讨论线程池的优点和缺点,以及在实际应用中如何选择合适的线程池策略。
|
1天前
|
Java 开发者
Java中的多线程编程:基础知识与实践
【5月更文挑战第26天】 在现代计算机科学中,多线程编程是一个复杂且强大的概念。Java作为一种广泛使用的编程语言,其对多线程的支持使得开发者能够创建出更为复杂、高效和响应迅速的应用程序。本文将深入探讨Java中的多线程编程,从基础概念到实际编程技巧,为读者提供全面的理解和实践指导。
|
1天前
|
Java 调度 开发者
Java并发编程:深入理解线程池
【5月更文挑战第26天】在Java中,线程池是处理并发任务的高效工具。本文将深入探讨Java线程池的原理、使用及性能优化,帮助开发者更好地理解和应用线程池技术。
|
1天前
|
安全 Java 开发者
探索Java中的多线程编程与并发控制
多线程编程是Java编程中不可或缺的一部分,它允许程序同时执行多个任务,从而显著提高程序的整体性能。然而,多线程编程也带来了诸如数据不一致、死锁等并发问题。本文将深入探讨Java中的多线程编程技术,包括线程的创建、同步与通信,并介绍几种常用的并发控制策略,旨在帮助读者更好地理解并发编程的复杂性和挑战,并学会如何编写高效、安全的并发程序。
|
1天前
|
安全 算法 Java
深入理解Java并发编程:线程安全与性能优化
【5月更文挑战第26天】在Java开发中,高效地处理并发编程问题对于提升应用的性能和稳定性至关重要。本文将深入探讨Java中的线程安全性问题,分析并发编程的挑战,并介绍一系列实用的解决方案和性能优化技巧。我们将通过具体示例,包括锁机制、线程池以及原子类等高级特性,来指导开发者如何在实践中实现高效的并发控制。
|
2天前
|
Java 开发者
Java中的多线程编程:理解、实现与性能优化
【5月更文挑战第25天】 在Java中,多线程编程是实现并发执行任务的关键手段。本文将深入探讨Java多线程的核心概念,包括线程的创建、生命周期、同步机制以及高级特性。我们将通过实例演示如何有效地创建和管理线程,同时着重分析多线程环境下的性能调优策略和常见问题解决方法。文章旨在为读者提供一个全面的视角,帮助其掌握Java多线程编程的技巧,并在实际开发中避免潜在的并发问题,提升程序的性能和稳定性。
|
2天前
|
安全 Java 测试技术
Java并发编程:理解线程同步和锁
【5月更文挑战第25天】本文深入探讨了Java并发编程的核心概念,即线程同步和锁。通过详细解释这两种机制,我们能够理解它们如何帮助解决多线程环境中的竞态条件问题。此外,文章还提供了一些示例代码,以展示如何在Java中使用这些技术。
|
2天前
|
安全 Java
Java中的多线程编程:从理论到实践
【5月更文挑战第25天】本文将深入探讨Java中的多线程编程,从基础理论到实际应用,为读者提供全面的理解和实践指导。我们将首先介绍多线程的基本概念和重要性,然后详细解析Java中实现多线程的两种主要方式:继承Thread类和实现Runnable接口。接着,我们将探讨如何在多线程环境中处理共享资源,以及如何利用Java的并发工具来管理线程。最后,我们将通过一个实际的例子来演示如何在实际开发中使用多线程。
|
2天前
|
Java 调度
Java并发编程:深入理解线程池
【5月更文挑战第25天】在Java中,线程池是一种管理线程的高效方式,它可以提高系统性能并降低资源消耗。本文将深入探讨Java线程池的原理、使用及优化方法,帮助读者更好地理解和应用线程池技术。
|
2天前
|
Java 调度
Java中线程池的技术
Java中线程池的技术
16 3