Jsoup代码示例解析网页+提取文本

Posted 萌新人鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jsoup代码示例解析网页+提取文本相关的知识,希望对你有一定的参考价值。

使用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代码示例解析网页+提取文本的主要内容,如果未能解决你的问题,请参考以下文章

使用Jsoup解析html网页

如何在java中提取网页文本内容? [关闭]

使用jsoup抓取和解析网页数据

Java中解析HTML数据 (利用第三方库Jsoup)

Java中基于模板提取网页信息

如何使用 Jsoup 提取单独的文本节点?