資源君帶你抓取網站數據

  • 2019 年 10 月 4 日
  • 筆記

溫馨提示

本文閱讀需要5分鐘左右

1.寫在前面的話

這是公眾號Java模板(跟資源君一起學Java)的第一篇推文,資源君創建這個模板也是為了監督自己不斷的學習,並且不斷的跟大家一起分享編程當中的一些好玩的東西。我也希望通過這個模板,大家一起進步!Java和python兩個模板大概一周會推出兩篇文章左右,因為資源君平時也沒有太多的時間,所以請各位見諒了!

2.基礎知識

jsoup is a Java library for working with real-world HTML. It provides a very convenient API for extracting and manipulating data, using the best of DOM, CSS, and jquery-like methods.

上面是官方給的jsoup官方解釋,中文意思是 jsoup 是一款Java 的HTML解析器,可直接解析某個URL地址、HTML文本內容。它提供了一套非常省力的API,可通過DOM,CSS以及類似於jQuery的操作方法來取出和操作數據。

總的來說,就是可以幫我們解析HTML頁面,並且可以抓取html裡面的內容。

3.開始寫程式碼

我們的目標是抓取菜鳥筆記上的資訊(文章標題和鏈接)

public static void main(String[] args) {       try {           //下面這行程式碼是連接我們的目標站點,並且get到他的靜態HTML程式碼      Document document=Jsoup.connect("http://www.runoob.com/w3cnote").get();           //我們把獲取到的document列印一下,看看裡面到底是啥?      System.out.println(document);    } catch (IOException e) {      e.printStackTrace();    }   }

看我們程式碼運行後的結果:

你會發現我們通過這一句就獲得了「菜鳥筆記」這個網站的HTML源碼

我們來分析一下這串html源碼

發現這兩個正是我們所想要得到的數據,我們繼續抓取

public static void main(String[] args) {       try {      Document document=Jsoup.connect("http://www.runoob.com/w3cnote").get();      //底下一行程式碼是我們進一步抓取到具體的HTML模組,div表示<div>標籤,              //後面的post-intro表示的是div的class              //由於div.post-intro這個標籤有多個(每個標題有一個),所以我們先獲取到它的所有              Elements elements=document.select("div.post-intro");              //我們來遍歷一下,因為div.post-intro有很多個      for(int i=0;i<elements.size();i++) {             //下面一行我們獲取到文章的標題,可以結合圖片來分析             // get(i)是為了獲取每個div裡面的<a>標籤。後面的text(),就是獲取<a></a>中的內容        String title=elements.select("a").get(i).text();             //attr是獲取<a href="">裡面的屬性        String url=elements.select("a").get(i).attr("href");             //分別列印出來        System.out.println(title);        System.out.println("http://www.runoob.com/"+url);      }    } catch (IOException e) {      e.printStackTrace();    }   }

這樣我們就抓取到我們想要的內容了!