您的位置:首页 > 编程语言 > Java开发

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

2012-11-29 18:18 579 查看
java采集数据,获取了 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

//门票浏览 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、 获取页面的节点对象

[java] view
plaincopy

Document docdata = Jsoup.connect(url).timeout(20000).get();

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

例如:

String title = ".proDetail h1";

ele = docdata.select(title);

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

[java] view
plaincopy

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文件。 如果有需要也可以存入数据库啦。

[java] view
plaincopy

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标签,获取指定数据,就搞定了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: