java document select_Java爬虫之Jsoup Document select详解

select详解

Document 继承自 Element 类。select方法将返回一个Elements集合。

1.通过标签名来查找:

测试代码:

33

25

select写法:Elements elements = document.select("span");

下面的例子都按照上面的格式来写,就不进行重复的标注了。

2.通过id来查找:

36

20

select写法: Elements elements = document.select("#mySpan");

//通过id来查找,使用方法跟css指定元素一样,用#

3.通过class名来查找:

36

20

select写法:Elements elements = document.select(".myClass");

//使用方法跟css指定元素一样,用.

4.利用标签内属性名查找元素:

36

36

select写法:Elements elements = document.select("span[class=class1]span[id=id1]");

//规则为 标签名【属性名=属性值】,多个属性即多个【】,如上

5.利用标签内属性名前缀查找元素:

36

22

select写法:Elements elements = document.select("span[^cl]");

//规则为 标签名【^属性名前缀】,多个属性即多个【】

6.利用标签内属性名+正则表达式查找元素

对正则表达式不了解的同学下去一定要学习正则表达式哦,因为它在爬虫中可是很重要的。

36

22

select写法:Elements elements = document.select("span[class~=^AB]");

//规则为 标签名【属性名~=正则表达式】,以上的正则表达式的意思是查找class值以AB为开头的标签

7.利用标签文本包含某些内容来查找:

36

22

select写法:Elements elements = document.select("span:contains(3)");

//规则为 标签名:contains(文本值)

8.利用标签文本包含某些内容+正则表达式来查找:

36

22

select写法: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);

}

9.获取table的下级tr标签数据

例:获取主tr

1

张三

17

山东

邮箱

2

李四

18

哈尔滨

邮箱

3

王五

19

北京One

南北

实现

Elements rows = doc.select("tbody[id='js_video_container']>tr");

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值