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标签,获取指定数据,就搞定了
该考虑的是如何过滤掉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标签,获取指定数据,就搞定了
相关文章推荐
- java+Jsoup 正则过滤html网页标签【多线程数据采集之二】
- java+Jsoup 正则过滤html网页标签【多线程数据采集之二】
- java+Jsoup 正则过滤html网页标签【多线程数据采集之二】
- 用正则表达式过滤数据中的html标签
- ASP.NET正则表达式提取网页网址、标题、图片实例以及过滤所有HTML标签实例
- asp.net正则表达式提取网页网址、标题、图片实例以及过滤所有HTML标签实例
- java+Jsoup&nbsp;正则过滤html网页…
- asp.net正则表达式提取网页网址、标题、图片实例以及过滤所有HTML标签实例
- jsoup 解析html网页标签获取数据(java 网页解析 数据)
- 正则过滤html标签
- 如何抓取网页数据、分析并且去除Html标签(C#)
- php正则获取html图片标签信息(采集图片)
- HTTP协议、正则表达式、HTML,WEB数据采集基础
- python 正则表达式过滤文本中的html标签 源代码解析
- 通过正则过滤html标签
- java正则表达式过滤html标签
- 常用正则表达式爬取网页信息及分析HTML标签总结
- 如何分析网页数据并且去除Html标签(C#)
- 网页预览 html过滤标签