Java爬蟲專案實戰案例四之Jsoup使用
阿新 • • 發佈:2018-12-22
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具有唯一性,所以這裡找到的值就是唯一值。
- 輸出即可