Java网络爬虫(五)--使用Jsoup的select语法进行元素查找
2017-03-30 20:33
295 查看
使用Jsoup进行元素的查找有两种方法。有使用DOM方法来遍历一个文档,也有使用选择器语法来查找元素,而后者类似于CSS或jQuery的语法来查找和操作元素。对于这两个方法到底使用哪个感觉好上手我觉得因人而异,在我尝试了两种方法之后我还是选择select,所以我就只总结select的语法使用了,对于DOM方法感兴趣的,可以看一下这一篇博客:【使用JSOUP实现网络爬虫】使用DOM方法来遍历一个文档,看之前最好先了解一下Java网络爬虫–HTML DOM(HTML 基础)。
1.通过标签名来查找:
测试代码:
select写法:
下面的例子都按照上面的格式来写,就不进行重复的标注了。
2.通过id来查找:
3.通过class名来查找:
4.利用标签内属性名查找元素:
5.利用标签内属性名前缀查找元素:
6.利用标签内属性名+正则表达式查找元素
对正则表达式不了解的同学下去一定要学习正则表达式哦,因为它在爬虫中可是很重要的。
7.利用标签文本包含某些内容来查找:
8.利用标签文本包含某些内容+正则表达式来查找:
当然select还有其他强大的功能,如果对select感兴趣的同学可以查看select API,我只是列出了获取网页特定内容所需要的select的基本语法,基本上对于大部分的爬虫需求来说已经足够了。
下来给大家展示一个使用select获取特定元素值的代码:
上面的代码是我爬京东图书提取图书的id的部分截取,可以看到select的用法与前面讲的没有什么区别。对于Element 这个类来说,如果我们要获取一个标签中的属性值或文本内容可以这样来做:
select详解
Document 继承自 Element 类。select方法将返回一个Elements集合。1.通过标签名来查找:
测试代码:
<span>33</span> <span>25</span>
select写法:
Elements elements = document.select("span");
下面的例子都按照上面的格式来写,就不进行重复的标注了。
2.通过id来查找:
<span id=\"mySpan\">36</span> <span>20</span>
Elements elements = document.select("#mySpan"); //通过id来查找,使用方法跟css指定元素一样,用#
3.通过class名来查找:
<span class="myClass">36</span> <span>20</span>
Elements elements = document.select(".myClass"); //使用方法跟css指定元素一样,用.
4.利用标签内属性名查找元素:
<span class="class1" id="id1">36</span> <span class="class2" id="id2">36</span>
Elements elements = document.select("span[class=class1]span[id=id1]"); //规则为 标签名【属性名=属性值】,多个属性即多个【】,如上
5.利用标签内属性名前缀查找元素:
<span class="class1" >36</span> <span class="class2" >22</span>
Elements elements = document.select("span[^cl]"); //规则为 标签名【^属性名前缀】,多个属性即多个【】
6.利用标签内属性名+正则表达式查找元素
对正则表达式不了解的同学下去一定要学习正则表达式哦,因为它在爬虫中可是很重要的。
<span class="ABC" >36</span> <span class="ADE" >22</span>
Elements elements = document.select("span[class~=^AB]"); //规则为 标签名【属性名~=正则表达式】,以上的正则表达式的意思是查找class值以AB为开头的标签
7.利用标签文本包含某些内容来查找:
<span>36</span> <span>22</span>
Elements elements = document.select("span:contains(3)"); //规则为 标签名:contains(文本值)
8.利用标签文本包含某些内容+正则表达式来查找:
<span>36</span> <span>22</span>
Elements elements = document.select("span:matchesOwn(^3)"); //规则为 标签名:matchesOwn(正则表达式),以上的正则表式的意思是以文本值以3为开头的标签
当然select还有其他强大的功能,如果对select感兴趣的同学可以查看select API,我只是列出了获取网页特定内容所需要的select的基本语法,基本上对于大部分的爬虫需求来说已经足够了。
下来给大家展示一个使用select获取特定元素值的代码:
public class SelectDemo { public static void test(String html) { //采用Jsoup解析 Document doc = Jsoup.parse(html); //System.out.println(html); //获取html标签中的内容 Elements elements = doc.select("ul[class=gl-warp clearfix]") .select("li[class=gl-item]"); for (Element ele : elements) { String JdbookID = ele.attr("data-sku"); //out.println(JdbookID); } } }
上面的代码是我爬京东图书提取图书的id的部分截取,可以看到select的用法与前面讲的没有什么区别。对于Element 这个类来说,如果我们要获取一个标签中的属性值或文本内容可以这样来做:
for (Element ele : elements) { String JdbookID = ele.attr("data-sku"); //获取data-sku的属性值 //out.println(JdbookID); String text = ele.text(); //获取当前标签(元素)的文本值 //out.println(text); }
相关文章推荐
- jsoup Java HTML解析器:使用选择器语法来查找元素
- jsoup使用选择器语法来查找元素
- 【使用JSOUP实现网络爬虫】使用选择器语法来查找元素
- 【使用JSOUP实现网络爬虫】使用选择器语法来查找元素
- jSoup Cookbook-提取数据 7 使用选择器语法查找元素
- Jsoup使用选择器语法来查找元素
- 【Jsoup的学习礼记】使用选择器语法来查找元素
- JAVA在线抓取网页中的元素的例子(使用JSoup包进行解析)
- (三)Jsoup 使用选择器语法查找 DOM 元素
- JAVA在线抓取网页中的元素的例子(使用JSoup包进行解析)
- 【使用JSOUP实现网络爬虫】使用选择器语法来查找元素
- crawler_jsoup HTML解析器_使用选择器语法来查找元素
- jsoup使用选择器语法来查找元素
- jsoup教程007-使用选择器语法来查找元素
- 【Java Utility】Jsoup网页爬虫工具-使用选择器查找元素【八】
- 使用JSoup选择器语法来查找元素
- jSoup Cookbook-提取数据 7 使用选择器语法查找元素
- jsoup使用选择器语法来查找元素
- 使用选择器语法来查找元素
- Java 使用imgAreaSelect插件进行图片上传切割