1. 程式人生 > >JSoup入門筆記--------java HTML 解析庫

JSoup入門筆記--------java HTML 解析庫

某些情況下,我們會使用Java獲取網頁的內容,並根據網頁的內容得到特定標籤的資料。例如得到網頁中所有的超連結。一般情況下

URL url = new URL(strUrl);  
BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));  


上面一段程式碼可以讓我們獲取網頁的內容,然後使用正則表示式匹配想要的內容。上面的方法很直觀,但也比較繁瑣。

JSoup是一款HTML解析器,他的主要功能有

  1.    從一個URL,檔案或字串中解析HTML;
  2.    使用DOM或CSS選擇器來查詢、取出資料;
  3.    可操作HTML元素、屬性、文字;

下面介紹JSoup的基本使用方法:

1、解析一段HTML文字
Document doc = Jsoup.parse(html);  //html為一段html文字  如:html = "<head><title>hello</title></head><body>document string</body>"
   或者可以將直接連線URL獲取網頁內容。
Document doc = Jsoup.connect(url).get();

其中Document代表文件物件。 2、使用選擇器查詢特定的資料 下面這行程式碼可以查詢class屬性為item的元素。JSoup中有Elements和Element兩個常用的類。其中Elements類是Element物件的集合,實現了迭代器,可以使用for each 迭代Elements元素
Elements items = doc.getElementsByClass("item"); //class = item
另外還可用getElementById 等進行選擇。 3、針對特定的Element得到文字和屬性
link.attr("href");
link.getElementsByTag("span").get(0).text();
如上面第一行得到link元素的href屬性。 第二行則選擇link元素中的Tag為span的元素,並讀取第一個span元素包含的文字

附:JSoup文件中CSS選擇器的示例

File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");

Elements links = doc.select("a[href]"); // a with href
Elements pngs = doc.select("img[src$=.png]");
  // img with src ending .png

Element masthead = doc.select("div.masthead").first();
  // div with class=masthead

Elements resultLinks = doc.select("h3.r > a"); // direct a after h3