jsoup抓取網頁內容

java項目有時候咱們須要別人網頁上的數據,怎麼辦?咱們能夠藉助第三方架包jsou來實現,jsoup的中文文檔,那怎麼具體的實現呢?那就跟我一步一步來吧html

最早確定是要準備好這個第三方架包啦,下載地址,獲得這個jar後在須要怎麼作呢?別急,咱們慢慢來java

將jsoup.jar拷貝到項目的WebRoot—>WEB-INF—>lib文件夾node

以後咱們須要將這個架包引入一下哦!web

右鍵項目選擇build path—>configure build path—>libraries—>add jars—>找到剛剛放入的目錄下的jsoup框架

 

準備工做完成了,接下來就是咱們的編碼部分了,加油哦!post

既然是抓取網頁的內容那確定首要有被抓的網站的地址,這裏就以我其中一篇博客爲準吧http://www.cnblogs.com/luhan/p/5953387.html網站

這個是我這篇文章的截圖,好比我要抓取Android零碎知識點,以後會一直更新哦這一段文字ui

 

//獲取整個網站的根節點,也就是html開頭部分一直到結束,這裏get方式,post方式是同樣的
Document document = Jsoup.connect(url).get();編碼

//輸出一下咱們會看到整個字符串以下
System.out.println(document);url

這裏只是截圖了一部分

 

咱們會看到咱們須要抓的那一段文字在a標籤包裹在,並且還有一個重要的就是id=cb_post_title_url,看過文檔的應該知道,jsoup裏面有getElementById這個方法,其實跟js裏面獲取元素是同樣的,這裏咱們就能夠用

getElementById的方法來獲取這個a標籤,獲取到後咱們就能夠獲取裏面的內容了不是嗎?而正好jsou也給咱們提供了這樣的一個方法text()方法,就是獲取標籤的文本內容,記得是文本而不是html形式的

以下咱們經過getElementById這個方法來獲取到咱們想要的a標籤

Element a = document.getElementById("cb_post_title_url");

這時候咱們輸出的內容以下
System.out.println(a.text());

是否是獲得了咱們想要的了?固然啦,這只是jsoup的最簡單的抓取而已,若是須要獲取到的是個列表形式的啊,jsoup也同樣能夠的,咱們都知道id是惟一的,不能夠重複的,因此咱們經過id獲取到的只能是一行標籤

可是通常列表好比ul-li咱們就能夠用getElementsByTag這個方法,經過標籤名獲取,而後再經過for循環的方式一個一個的去抓就完事啦,接下來附上代碼

package com.luhan.text; import java.io.IOException; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; public class Text { private static final String url = "http://www.cnblogs.com/luhan/p/5953387.html"; public static void main(String[] args) { try { //獲取整個網站的根節點,也就是html開頭部分一直到結束
            Document document = Jsoup.connect(url).post(); Element a = document.getElementById("cb_post_title_url"); System.out.println(a.text()); } catch (IOException e) { // TODO Auto-generated catch block
 e.printStackTrace(); } } }

 

jsoup裏面的方法我就不一一介紹啦,不懂的小夥伴能夠去看jsoup的中文文檔哦,我就說說比較重要的方法吧

Jsoup.connect(url).post();獲取網頁的跟目錄

getElementById經過id來獲取

getElementsByClass經過class來獲取

getElementsByTag經過標籤名稱來獲取

 

text()獲取標籤的文本,再次強調一下是文本

html()獲取標籤裏面的全部字符串包括html標籤

attr(attributeKey)獲取屬性裏面的值,參數是屬性名稱

注意

  jsoup獲取網頁的根目錄可能跟源代碼不同,因此須要小夥伴們細心哦

 

至此jsoup抓取網頁的數據就告一段落啦,說的不太好,歡迎你們多指點,這個我用java控制檯的,javaweb以及Android用法是同樣的,先要導入框架,而後調用方法就ok了

相關文章
相關標籤/搜索