HTML抽取工具Jsoup

來源:互聯網
上載者:User
文章目錄
  • jsoup的主要功能如下:

Jsoup 是一款Java 的HTML解析器,可直接解析某個URL地址、HTML常值內容。它提供了一套非常省力的API,可通過DOM,CSS以及類似於jQuery的操作方法來取出和操作資料。目前的版本為1.7.1。

 

jsoup的主要功能如下:

1. 從一個URL,檔案或字串中解析HTML;

2. 使用DOM或CSS選取器來尋找、取出資料;

3. 可操作HTML元素、屬性、文本;

Jsoup官方網站:http://jsoup.org/.可以通過其給出的學習資料http://jsoup.org/cookbook/和它的API進行學習http://jsoup.org/apidocs/.

經過翻譯的中文資料不妨參考http://www.open-open.com/jsoup/,這些都是學習Jsoup的好材料。

圖所示是Jsoup包結構,Jsoup首先將一個Html文檔或者Html片段解析成DOM結構,Html上的每一個元素都對應於DOM中的一個節點node。因此,可通過 DOM,CSS 以及類似於 jQuery 的操作方法來取出和操作資料。

例如,以下是一個Jsoup抽取Web頁面的例子:

 1 import java.net.URL; 2  3 import org.jsoup.Jsoup; 4 import org.jsoup.nodes.Document; 5 import org.jsoup.nodes.Element; 6 import org.jsoup.select.Elements; 7  8 public class JsoupTest  9 {10 11     public static void main(String[] args) throws Exception12     {13         URL url = new URL("http://www.guet.edu.cn"); //串連一個頁面14         Document doc = Jsoup.parse(url, 3 * 1000);   //解析擷取Document對象15 16         Elements test = doc.select("a"); //擷取頁面上所有的a元素17         for (Element element : test) 18         {19             //element.outerHtml() 和  element.toString()效果一樣20             System.out.println("連結原始碼:" + element.outerHtml());21             System.out.println("連結地址:" + element.attr("href") + "  連結文本:"22                     + element.text()+" next sbl:"+element.nextSibling().nodeName());23             ;24         }25 26     }27 }

至於如何擷取一個HTML文檔的頁面所有常值內容,不妨使用上面的例子作如下修改:

import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import org.jsoup.nodes.Node;import org.jsoup.select.Elements;public class LoadDocument{    public static void main(String[] args) throws Exception    {        Document doc = Jsoup.connect("http://Jsoup.org").get();         String title = doc.title();                System.out.println("文檔的Html內容:");        System.out.println(doc.html());                System.out.println("常值內容為:");        System.out.println(doc.text());    }}

結果如:

 

通過Jsoup,可以較為方便的抽取頁面上的內容,更為方便的是《Use selector-syntax to find elements》可以制定抽取規則,抽取頁面上的目標資訊節點。

例如:

 1 import java.io.File; 2 import java.io.IOException; 3  4 import org.jsoup.Jsoup; 5 import org.jsoup.nodes.Document; 6 import org.jsoup.nodes.Element; 7 import org.jsoup.select.Elements; 8  9 10 public class Use_selector_syntax_find_elements {11 12 13     public static void main(String[] args) throws IOException14     {15         //File input = new File("http://www.hao123.com//index.html");16         Document doc = Jsoup.connect("http://www.hao123.com/index.htm").get();17         //Document doc = Jsoup.parse(input, "gb2312","");18         19         System.out.println("-----------------------------------------------");20         System.out.println(doc);21         System.out.println("-----------------------------------------------");22         paser(doc);23     }24     25     public static void paser(Document doc)26     {27         Elements links = doc.select("a[href]"); // a with href 28         Elements pngs = doc.select("img[src$=.png]");  // img with src ending .png 29         Element masthead = doc.select("div.masthead").first();   // div with class=masthead 30         Elements resultLinks = doc.select("h3.r > a"); // direct a after h331         32         System.err.print(links);33         System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++");34         35     }36 }

Jsoup功能同HtmlParser,但卻比Htmlparser更為方便,API更加簡潔。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.