Java爬取網頁內容demo

一,初識jsoup

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

        1. 獲取數據源的方法:Document doc = Jsonp.connect("https://xxxxxx").get();

        2.Document 繼承Element 類, 而Element類有個很好的方法select ,select 選擇器幾乎無所不能(百度: jsoup  select 學習更多選擇器)。

<li class="dn on" data-dn="7d1">
  <h1>今天</h1>
  <h2>8日</h2>
  <big class="jpg50 d04"></big>
  <big class="jpg50 n04"></big>    
  <p class="wea" title="雷陣雨">雷陣雨</p>
  <p class="tem tem1"> <span>33</span><i>°C</i> </p>
  <p class="tem tem2"> <span>25</span><i>°C</i> </p>
  <p class="win">
    <em>
      <span id="mySpan" title="無持續風向" class="">無持續風向</span>
      <span title="無持續風向" class=""></span>
    </em>
    <i>微風</i>
  </p>
  <div class="slid">22</div>
</li>

         a. 通過標籤名稱進行查找:Elements elements = doc.select("h1");  

         b.通過 id 進行查找:Elements elements = doc.select("#mySpan"); 

         c.通過 class 名稱進行查找:Elements elements = doc.select(".slid");

       

二,demo 獲取新聞內容

    1.引入jar包:jsoup-1.6.1.jar。

    2.按f12,目標網頁分析確定需要爬取的數據使用哪些選擇器獲取到數據,對自己要爬的數據的標籤要熟悉。

package com.puboot.common.util;

import java.io.IOException;
import java.util.List;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
 
 
 
public class JsoupUtils {
 
	 /**
	  * 
	  * @param url 訪問路徑
	  * @return
	  */
     public  Document getDocument (String url){
         try {
        	 //通過Jsoup獲取資源,5000是設置連接超時時間,單位ms
             return Jsoup.connect(url).timeout(5000).get();
         } catch (IOException e) {
             e.printStackTrace();
         }
         return null;
     }
 
 
 
     public static void main(String[] args) {
 
         JsoupUtils t = new JsoupUtils();
         Document doc = t.getDocument("https://baijiahao.baidu.com/s?id=1667756469242968479&wfr=spider&for=pc");
         //文章標題
         Elements elements1 = doc.select(".article-title");//通過 class名稱進行查找,獲取標題標籤         
         System.out.println("文章標題: "+elements1.text());//從標籤中獲取標題
         
         //文章內容
         Elements elements2 = doc.select(".article-content");
         Elements elements3 = elements2.select(".bjh-p");
         System.out.println("文章內容: "+elements3.html());
         
         //圖片
         Elements elements4 = doc.select(".large");
         List<String> eachAttr = elements4.eachAttr("src");
         for(int i=0; i<eachAttr.size();i++) {
        	 System.out.println("圖片連接"+i+":"+eachAttr.get(i));       	
         }
         
         //文章來源
         Elements elements5 = doc.select(".author-name");
         System.out.println("文章來源: "+elements5.html());
         
         //發佈時間
         Elements elements6 = doc.select(".date");
         Elements elements7 = doc.select(".time");
         System.out.println(elements6.html()+" "+elements7.html());
     }
}

不同的模板解析不同,根據具體需求解析。

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章