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

时间:2022-11-03 13:13:22

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

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

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

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

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

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

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

[java] view plaincopy
  1. //门票浏览  url参数 http://www.lvmama.com/dest/lantiancheng  
  2.     public static DataBean getWebData1(String url){  
  3.         DataBean data = null;  
  4.         try {  
  5.             Document docdata = Jsoup.connect(url).timeout(20000).get();  
  6.             String id = ".quick-menu .last a";  
  7.             String city = ".proDetail a";  
  8.             String title = ".proDetail h1";  
  9.             String content = "#Introduction";  
  10.             Elements ele = docdata.select(city);  
  11.             city = (ele.text());   
  12.             ele = docdata.select(title);  
  13.             title = (ele.text()).replace("<""").replace(">""").replace("\\/""");  
  14.             ele = docdata.select(content);  
  15.             content = (ele.text());  
  16.             ele = docdata.select(id);  
  17.             String[] idary = ele.attr("href").split("\\/");  
  18.             id = idary[idary.length-1];  
  19.             String type = "景点门票";  
  20.   
  21.             List<String> images = new ArrayList<String>();  
  22.             data = new DataBean(id,title,url,content,type,city,images);  
  23.             Dom4jUtil.createFile("data/["+type+"]"+title+".xml", Dom4jUtil.createDocument(data));  
  24.               
  25.             type = "景点评论";  
  26.             content = ".userComments dl dd:eq(3)";  
  27.             ele = docdata.select(content);  
  28.             content = "";  
  29.             int i = 1;  
  30.             for (Element el : ele) {  
  31.                 content += ("|第"+i+":"+el.text());  
  32.                 i++;  
  33.             }  
  34.             data = new DataBean(id,title,url,content,type,city,images);  
  35.             //用xml存储数据  
  36.             Dom4jUtil.createFile("data/["+type+"]"+title+".xml", Dom4jUtil.createDocument(data));  
  37.         } catch (Exception e) {  
  38.             e.printStackTrace();  
  39.         }  
  40.         return data;  
  41.     }  

整个过程分为几部

1、 获取页面的节点对象

[java] view plaincopy
  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()   就得到了标签中的文本。

[java] view plaincopy
  1. Document docdata = Jsoup.connect(url).timeout(20000).get();  
  2.             String id = ".quick-menu .last a";  
  3.             String city = ".proDetail a";  
  4.             String title = ".proDetail h1";  
  5.             String content = "#Introduction";  
  6.             Elements ele = docdata.select(city);  
  7.             city = (ele.text());   
  8.             ele = docdata.select(title);  
  9.             title = (ele.text()).replace("<""").replace(">""").replace("\\/""");  
  10.             ele = docdata.select(content);  
  11.             content = (ele.text());  
  12.             ele = docdata.select(id);  
  13.             String[] idary = ele.attr("href").split("\\/");  
  14.             id = idary[idary.length-1];  

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

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

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

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

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