Jsoup使用隨記

來源:互聯網
上載者:User

標籤:官方   use   控制台   api   程式   except   等等   pst   script   

這段時間工作比較空閑,在網上找資料學習的時候看到資料抓取這一塊,來了興趣

用jsoup實現資料抓取著實方便,唯一美中不足的是官方API是英文版的,對我這樣英語水平不好的程式員來說著實困擾,只能一點點的去實踐

所以有了這篇隨記,以後用的時候好回頭溫習溫習

Jsoup的一系列解析html操作是基於Document這個執行個體對象的,執行個體化方式有很多種,通過url,通過檔案,通過字串。

這裡我用的是url的方式,用來解析一個網站上的某些內容

eg:

Document doc = Jsoup.connect(url).get();

這個是官方提供的執行個體化方法,然而我使用的時候控制台報錯

org.jsoup.HttpStatusException: HTTP error fetching URL. Status=403, URL=XXX

後來網上找了一下原因:

有些網站的伺服器在響應http請求的時候,需要用戶端提交的資訊比較完善,而在Jsoup的Connection類中這個Header就是完善請求資訊用的。

我們的瀏覽器在請求網頁的時候會在請求的頭部head中發送一些資料,比如瀏覽器類型,版本,語言等等。當我們用Jsoup去完成請求網頁的工作時,最好也要完善請求包頭資訊,完成這個工作的就是header方法。

在執行個體化的時候加上

Document doc = Jsoup.connect(url).userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31").get();

就能解決這個報錯問題

doc操作方法,大部分跟JavaScript中的差不多,見名知意

getElementsByTag() : 擷取某個節點

getElementsByClass() : 擷取某個class中的節點

getElementById() : 擷取某個id中的節點

等等

通過這些方法返回的是Element對象

通過Element對象可以繼續往下操作

children() : 擷取子節點,這個我試過,擷取到的只是第一個子節點

text() : 擷取文本

attr() : 擷取該節點的屬性值

放上一段代碼片:

Document docu = Jsoup.connect(url).userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31").get();
Elements ele = docu.getElementsByClass("text");  //擷取class為text的節點內容
for(Element e : ele){  //迴圈
Elements uurl = e.children();
String t = uurl.text(); //擷取標題
String hr = uurl.attr("href"); //擷取連結
Document docum = Jsoup.connect(hr).userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31").get();  //根據上一步擷取的連結,執行解析該連結的html
Element elem = docum.getElementById("contentText");
Elements elems = elem.getElementsByTag("p");
String text = elems.text(); //擷取內容
}

程式碼片段是用來抓取某網站的資料

 

Jsoup使用隨記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.