jsoup網絡爬取數據HTML解析

Jsoup是一款網絡爬取數據的解析器,能夠解析HTML文件中的任何子節點,支持離線HTML文件、字符型HTML內容、URL的解析。很是方便和實用。css

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);

它獲取內容的主要方式以下幾點:html

1.經過標籤名來查找 

<span>33</span><span>25</span>  正則表達式

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

注:經過標籤來查找,直接寫 "標籤名" 就好,不須要尖括號。 app

2.經過  id  來查找   

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

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

注:經過id來查找,使用方法跟css指定元素同樣,用# element

3.經過  class名  來查找  

<span class=\"myClass\">36</span><span>20</span>  字符串

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

注:經過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)");

相關文章
相關標籤/搜索