Jsoup代碼示例、解析網頁+提取文本
阿新 • • 發佈:2017-10-07
執行 jar包 .text set tex ons 分享 使用 登陸
使用Jsoup解析HTML
那麽我們就必須用到HttpClient先獲取到html
同樣我們引入HttpClient相關jar包
以及commonIO的jar包
我們把httpClient的基本代碼寫上,然後解析網頁 得到文檔對象
我們獲取title和制定id的文檔對象
代碼實例:
package com.zhi.jsoup1; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class Demo { public static void main(String[] args) throws Exception { CloseableHttpClient httpClient=HttpClients.createDefault(); //1、創建實例 HttpGet httpGet=new HttpGet("https://home.cnblogs.com/u/mengxinrenyu/"); //2、創建實例 httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0"); CloseableHttpResponse httpResponse=httpClient.execute(httpGet); //3、執行 HttpEntity entity=httpResponse.getEntity(); //4、獲取實體 String content=EntityUtils.toString(entity, "utf-8"); //5、獲取網頁內容 httpResponse.close(); httpClient.close(); Document doc=Jsoup.parse(content); // 解析網頁 得到文檔對象 Elements elements=doc.getElementsByTag("title"); // 獲取tag是title的所有DOM元素 Element element=elements.get(0); // 獲取第1個元素 String title=element.text(); // 返回元素的文本 System.out.println("標題:"+title); element=doc.getElementById("top_left"); // 獲取id=top_left的DOM元素 String menu=element.text(); // 返回元素的文本 System.out.println("導航:"+menu); } }
由於網頁我是登陸以後的,所以會出現以下錯誤
因為請求的是某個登陸賬戶下的網頁,所以網頁會提示登錄。從沒沒有相應id的元素,返回NPE。
我們換一個新聞頁面試一下
代碼示例:
public class Demo { public static void main(String[] args) throws Exception { CloseableHttpClient httpClient=HttpClients.createDefault(); //1、創建實例 HttpGet httpGet=new HttpGet("https://news.cnblogs.com/"); //2、創建實例 httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0"); CloseableHttpResponse httpResponse=httpClient.execute(httpGet); //3、執行 HttpEntity entity=httpResponse.getEntity(); //4、獲取實體 String content=EntityUtils.toString(entity, "utf-8"); //5、獲取網頁內容 httpResponse.close(); httpClient.close(); Document doc=Jsoup.parse(content); // 解析網頁 得到文檔對象 Elements elements=doc.getElementsByTag("title"); // 獲取tag是title的所有DOM元素 Element element=elements.get(0); // 獲取第1個元素 String title=element.text(); // 返回元素的文本 System.out.println("標題:"+title); element=doc.getElementById("top_mini_nav_block"); // 獲取id=top_left的DOM元素 String menu=element.text(); // 返回元素的文本 System.out.println("導航:"+menu); } }
運行如圖:
Jsoup代碼示例、解析網頁+提取文本