java爬虫-网页解析Jsoup

  • 时间:2018-08-30 22:36 作者:有志者1281 来源:有志者1281 阅读:437
  • 扫一扫,手机访问
摘要:Jsoup是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及相似于jQuery的操作方法来取出和操作数据。 在爬虫采集网页领域主要作使用是使用HttpClient获取到网页后,用Jsoup提取网页中需要的信息,Jsoup

Jsoup是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及相似于jQuery的操作方法来取出和操作数据。

在爬虫采集网页领域主要作使用是使用HttpClient获取到网页后,用Jsoup提取网页中需要的信息,Jsoup支持相似Jquery、CSS选择器,来获取需要的数据,用非常方便。

下面结合代码简单展现如何用Jsoup获取需要的页面数据。

public class JsoupHello {

public static void main(String[] args) throws Exception{

CloseableHttpClient httpclient = HttpClients.createDefault(); // 创立httpclient实例

HttpGet httpget = new HttpGet("http://www.cnblogs.com/"); // 创立httpget实例

CloseableHttpResponse response = httpclient.execute(httpget); // 执行get请求

HttpEntity entity=response.getEntity(); // 获取返回实体

String content=EntityUtils.toString(entity, "utf-8");

response.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 element2=doc.getElementById("site_nav_top"); // 获取id=site_nav_top的DOM元素

String navTop=element2.text(); // 返回元素的文本

System.out.println("口号:"+navTop);

}

}

1、用httpClient 获取网页2、用jsoup parse解析网页,并根据丰富的getElement方法按照不同的属性获取元素值

二、常使用查找dom元素方法

1、根据标签名(tagName)查找dom

Elements elements=doc.getElementsByTag("title"); //获取tag是title的所有dom元素

Element element= elements.get(0); //获取第一个

System.out.println(element.text());//输出元素txt值

2、根据元素Id查找

3、根据class 名查找

4、根据attribute属性名查找

5、根据attribute和attributeValue共同查找

三、用Jsoup选择器查找dom元素1、class类选择器用

//class 用. 中间空格

Elements eleLinks= doc.select(".post_item .post_item_body h3 a");

for(Element el:eleLinks)

{

System.out.println(el.text());

}

2、带有href超链接的a标签查找

//css语法 带有href 属性的a元素

Elements elea= doc.select("a[href]");

for(Element ea:eleLinks)

{

System.out.println(ea.toString());

}

3、查找图片标签

//img图片

Elements imgs= doc.select("img[src$=.png]");//查找img标签,后缀为png的所有图片dom

for(Element ea:imgs)

{

System.out.println(ea.toString());

}

4、根据dom Id查找元素

//根据dom id获取元素 ,text返回a的中文文本信息,html返回a标签链接信息

Element eleId=doc.select("#friend_link").first();

System.out.println("##############纯文本"+eleId.text());

System.out.println("##############纯文本"+eleId.html());

5、获取dom元素中指定属性值

Elements eleLinks= doc.select(".post_item .post_item_body h3 a");

for(Element el:eleLinks)

{

System.out.println("***********************标题是"+el.text()); //获取所有文本

System.out.println("***********************连接是"+el.attr("href")); //获取所有博客链接 dom a 里的属性值

}

  • 全部评论(0)
最新发布的资讯信息
【系统环境|windows】字节跳动前台面试题解析:盛最多水的容器(2021-03-20 21:27)
【系统环境|windows】DevOps敏捷60问,肯定有你想理解的问题(2021-03-20 21:27)
【系统环境|windows】字节跳动最爱考的前台面试题:JavaScript 基础(2021-03-20 21:27)
【系统环境|windows】JavaScript 的 switch 条件语句(2021-03-20 21:27)
【系统环境|windows】解决 XML 数据应用实践(2021-03-20 21:26)
【系统环境|windows】20个编写现代CSS代码的建议(2021-03-20 21:26)
【系统环境|windows】《vue 3.0探险记》- 运行报错:Error:To install them, you can run: npm install --save core-js/modules/es.arra...(2021-03-20 21:24)
【系统环境|windows】浅谈前台可视化编辑器的实现(2021-03-20 21:24)
【系统环境|windows】产品经理入门迁移学习指南(2021-03-20 21:23)
【系统环境|windows】初识webRTC(2021-03-20 21:23)
血鸟云
手机二维码手机访问领取大礼包
返回顶部