【java爬蟲】---爬蟲+jsoup輕松爬博客


爬蟲+jsoup輕松爬博客

      最近的開發任務主要是爬蟲爬新聞信息,這里主要用到技術就是jsoup,jsoup 是一款 Java的HTML解析器,可直接解析某個URL地址、HTML文本內容。它提供了一套非常省力的API,可通過

DOM,CSS以及類似於jQuery的操作方法來取出和操作數據。這篇文章就講通過jsoup爬蟲的實際案例,下一篇再講jsoup的具體文檔。

主要爬蟲對象就以我之前寫的一篇博客:【java提高】---java反射機制   

主要爬區的信息有

    (1)該文章的標題

    (2)該文章的二類標題

    (3)發表時間

    (4)閱讀數量

 

一、案例演示

1、代碼部分

package com.jincou.pachong;

import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

 /*
  * 這個案例你只需要看結果,具體的jsoup介紹下一篇博客會詳細介紹
  */
public class Pachong {
     public static void main(String args[]){     
    
         //這個就是博客中的java反射的url     
     final String url=  "https://www.cnblogs.com/qdhxhz/p/9230805.html";
         
        try {
        //先獲得的是整個頁面的html標簽頁面
         Document doc = Jsoup.connect(url).get();
        
         //獲取正文標題,因為整片文章只有標題是用h1標簽
         Elements btEl = doc.select("H1");
         String  bt=btEl.text();
         System.out.println("========正文標題======:"); 
         System.out.println(bt); 
                
       //獲取二級標題
         Elements ejbtEls = doc.select("H2");
       //因為整片文章有多個二級標題所以進行拼接
         StringBuilder  ejbts=new  StringBuilder();
         for(Element el :ejbtEls) {
             ejbts.append(el.text());
             ejbts.append("\n");
         }
        String ejbt=ejbts.toString();
        System.out.println("=======二級標題=========:"); 
        System.out.println(ejbt); 
                   
       //獲取時間
       Elements timeEl = doc.select("#post-date");
       String  time=timeEl.text();
       System.out.println("========發布時間=========:"); 
       System.out.println("發布時間:" + time); 
      
       //獲取閱讀數量
       Elements readEl = doc.select("#post_view_count");
       String  read=readEl.text();
       System.out.println("========閱讀數量=========:"); 
      System.out.println("閱讀數量:" + read); 
       
        } catch (IOException e) {
            e.printStackTrace();
        }
 }
}

2、運行結果

注意:我們發現該篇文章的信息都已經爬到了,但是為什么閱讀數量是...

 

二、案例講解

       首先我們要知道:jsoup 是一款Java 的HTML解析器,可直接解析某個URL地址、HTML文本內容。它提供了一套非常省力的API,可通過DOM,CSS以及類似於jQuery的操作方法來取出和操

作數據。上面這兩點很關鍵,具體細說。

1、如何爬到正文標簽

     我們看到正文標題的html標簽是h1標簽,所以我們只要獲得H1標簽元素,就可以爬到文本。那么同樣的二級標簽也是通過H2標簽爬到就可以。

2、如何獲得發布時間

    因為時間的標簽id是post-date,所以可以通過id獲得該標簽元素。

3、為什么閱讀數量是...

  我們看到頁面閱讀是有的,但爬蟲爬到確實...?

      這是為什么呢,這點很重要。那是因為該靜態頁面初始加載的時候是沒有閱讀數量的,閱讀數量是后來接口重新調取的。什么意思呢?其實很好理解所以你寫一篇文章的時候像標題,內容,時間

等等是不太會變動的,但是你的閱讀數量每訪問一次都會改變,所以不可能把閱讀數量和文章放在一張表里,而是分開放然后id關聯就可以。這樣就避免每次update文章表。所以靜態頁面初始是沒有

閱讀數量的。

那如何驗證是不是這樣。請看。

     我們發現初始的html頁面的閱讀量和評論都是沒有的,而是默認...,所以上面爬到的就是...

     那如何能爬到真實的閱讀量呢,這個就需要知道它真實的接口是什么,然后通過其它工具來爬,我們看下獲取閱讀量的真實接口。

既然知道閱讀量的真實接口,那么爬到它也就簡單了。

注意:通過這里我們要明白,只有html元素有的情況下,才能通過jsoup來爬蟲,如果是這接口獲得的數據,那么通過jsoup是無法獲取到的。

有關jsoup也是自己的理解,如有不正確請留言指點。

  

想太多,做太少,中間的落差就是煩惱。想沒有煩惱,要么別想,要么多做。中校【9】

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM