1. 程式人生 > >Java爬蟲專案實戰案例四之Jsoup使用

Java爬蟲專案實戰案例四之Jsoup使用

Java爬蟲專案實戰案例四之 Jsoup 使用

1. Jsoup簡介

Jsoup是一款java的HTML解析器,可直接解析某個URL地址,HTML文字內容。它提供了一套非常簡便的API,可通過DOM,CSS以及類似jQuery的操作方法來取出資料和操作資料。
在爬取到網頁之後,就需要使用Jsoup進行網頁的解析。

2. 程式碼

public static void test3() throws IOException{
        CloseableHttpClient httpClient = HttpClients.createDefault();//建立httpClient例項
        HttpGet httpGet =
new HttpGet("https://www.cnblogs.com/"); //建立httpGet例項 HttpHost proxy = new HttpHost("114.235.22.147", 9000); RequestConfig config = RequestConfig .custom() .setProxy(proxy) .setConnectTimeout(10000)//連線超時 .setSocketTimeout(10000)//讀取超時 .
build(); httpGet.setHeader("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64; rv:63.0) Gecko/20100101 Firefox/63.0"); CloseableHttpResponse response = httpClient.execute(httpGet);//指向http get請求 HttpEntity entity = response.getEntity();//獲取返回實體 //System.out.println("網頁內容:"+ EntityUtils.toString(entity,"utf-8"));//獲取網頁內容
System.out.println("Content-Type :"+entity.getContentType());//獲取內容型別 System.out.println("Status : "+response.getStatusLine());//判斷響應狀態 String content = EntityUtils.toString(entity); //way 1: Document docment = Jsoup.parse(content); Elements elements = docment.getElementsByTag("title"); Element speciEle = elements.get(0); String title = speciEle.text(); System.out.println("網頁標題是:"+title); //way 2 Element site_nav_top = docment.getElementById("site_nav_top"); String slogan = site_nav_top.text(); System.out.println("slogan :" + slogan); response.close(); httpClient.close(); }

3.執行結果

在這裡插入圖片描述

4.程式碼詳解

  • 獲取資訊方式1
        //way 1:
        Document docment = Jsoup.parse(content);
        Elements elements = docment.getElementsByTag("title");
        Element speciEle = elements.get(0);
        String title = speciEle.text();
        System.out.println("網頁標題是:"+title);
  • content是上文的entity得到

  • 通過Jsoup解析content,得到一個Document物件

  • 每個Document物件中包涵很多元素,但是我們只需要Tag = 'title’的集合,注意這裡是集合。所以如果需要某個具體的值,就需要指定集合中元素的下標,這裡取下標為0 的Element。【這時取到的就是Element,而是不Elements】

  • 然後通過取出來的Element物件獲取其中的文字。最後輸出

  • 獲取資訊方式2

        //way 2
        Element site_nav_top = docment.getElementById("site_nav_top");
        String slogan = site_nav_top.text();
        System.out.println("slogan :" + slogan);
  • 獲取content,獲取document同方式1
  • 通過document物件,找到其中id ='site_nav_top’的內容,注意,因為在一個html頁面中,id具有唯一性,所以這裡找到的值就是唯一值。
  • 輸出即可