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
<span>33</span><span>25</span> 正則表達式
Elements elements = doc.select("span"); 網絡
注:經過標籤來查找,直接寫 "標籤名" 就好,不須要尖括號。 app
<span id=\"mySpan\">36</span> <span>20</span> spa
Elements elements = doc.select("#mySpan"); htm
注:經過id來查找,使用方法跟css指定元素同樣,用# element
<span class=\"myClass\">36</span><span>20</span> 字符串
Elements elements = doc.select(".myClass");get
注:經過id來查找,使用方法跟css指定元素同樣,用 .
<span class=\"class1\" id=\"id1\">36</span><span class=\"class2\" id=\"id2\">36</span>
Elements elements = doc.select("span[class=class1]span[id=id1]");
注:規則爲 標籤名【屬性名=屬性值】,標籤名可寫可不寫,多個屬性即多個【】,如上。
<span class=\"class1\" >36</span><span class=\"class2\" >22</span>
Elements elements = doc.select("span[^cl]");
注:規則爲 標籤名【^屬性名前綴】,標籤名可寫可不寫,多個屬性即多個【】。
<span class=\"ABC\" >36</span><span class=\"ADE\" >22</span>
Elements elements = doc.select("span[class~=^AB]");
注:規則爲 標籤名【屬性名~=正則表達式】,以上的正則表達式的意思是查找以class值以AB爲開頭的標籤,標籤名可寫可不寫,多個屬性即多個【】
<span>36</span><span>22</span>
Elements elements = doc.select("span:contains(3)");
注:規則爲 標籤名:contains(文本值)
<span>36</span><span>22</span>
Elements elements = doc.select("span:matchesOwn(^3)");