jsoup网络爬取数据HTML解析

Jsoup是一款网络爬取数据的解析器,可以解析HTML文件中的任何子节点,支持离线HTML文件、字符型HTML内容、URL的解析。非常方便和实用。

Document doc = Jsoup.connect("https://www.zhihu.com/").get();
//File f = new File("pathname");
//Document doc = Jsoup.parse(f, "UTF-8", "");//离线文件形式
//Document doc = Jsoup.parse("html_String");//HTML格式的字符串
Elements links = doc.select("a[href]");
for (Element link : links) {
    sff.append(link.attr("abs:href")).append("  ").append(link.text()).append(" ");
}
myString = sff.toString();
Log.i("href:", myString);

它获取内容的主要方式如下几点:

1.通过标签名来查找 

<span>33</span><span>25</span>  

Elements elements = doc.select("span"); 

注:通过标签来查找,直接写 "标签名" 就好,不需要尖括号。 

2.通过  id  来查找   

<span  id=\"mySpan\">36</span> <span>20</span> 

Elements elements = doc.select("#mySpan"); 

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

3.通过  class名  来查找  

<span class=\"myClass\">36</span><span>20</span>  

Elements elements = doc.select(".myClass");

注:通过id来查找,使用方法跟css指定元素一样,用 . 

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

<span class=\"class1\" id=\"id1\">36</span><span class=\"class2\" id=\"id2\">36</span>   

Elements elements = doc.select("span[class=class1]span[id=id1]");

注:规则为 标签名【属性名=属性值】,标签名可写可不写,多个属性即多个【】,如上。

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

<span class=\"class1\" >36</span><span class=\"class2\" >22</span>  

Elements elements = doc.select("span[^cl]"); 

注:规则为 标签名【^属性名前缀】,标签名可写可不写,多个属性即多个【】。

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

<span class=\"ABC\" >36</span><span class=\"ADE\" >22</span>  

Elements elements = doc.select("span[class~=^AB]"); 

注:规则为 标签名【属性名~=正则表达式】,以上的正则表达式的意思是查找以class值以AB为开头的标签,标签名可写可不写,多个属性即多个【】  

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

<span>36</span><span>22</span>    

Elements elements = doc.select("span:contains(3)"); 

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

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

<span>36</span><span>22</span>   

Elements elements = doc.select("span:matchesOwn(^3)");

转载于:https://my.oschina.net/heyongrui/blog/810466

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值