文章目录
- Java爬虫(Jsoup)详解
- 一、引言
- 二、Jsoup 快速入门
- 1、Jsoup 简介
- 1.1、添加依赖
- 2、解析 HTML 文档
- 2.1、解析 HTML 字符串
- 2.2、从 URL 加载 Document
- 2.3、解析 body 片断
- 三、数据抽取
- 1、使用 DOM 方法遍历文档
- 3.1、获取元素
- 2、使用选择器语法查找元素
- 3.2、CSS 选择器示例
- 3、抽取属性、文本和 HTML
- 3.3、属性和内容抽取
- 四、数据修改
- 1、设置属性值
- 4.1、修改属性
- 2、设置元素的 HTML 内容
- 4.2、修改 HTML
- 五、总结
Java爬虫(Jsoup)详解
一、引言
在数据爬取领域,Python 以其强大的库支持而闻名,但 Java 同样不容小觑。Jsoup 就是 Java 中处理 HTML 的佼佼者,它不仅能够解析 HTML,还能提供类似于 jQuery 的 API 来提取和操作 HTML 页面数据。本文将详细介绍 Jsoup 的使用,让你能够快速上手 Java 爬虫。
二、Jsoup 快速入门
1、Jsoup 简介
Jsoup 是一款 Java 的 HTML 解析器,能够直接解析 URL 地址或 HTML 文本内容。它提供了一套非常省力的 API,可以通过 DOM、CSS 选择器以及类似于 jQuery 的操作方法来取出和操作数据。
1.1、添加依赖
在使用 Jsoup 之前,需要在项目中添加 Jsoup 的依赖包。以 Maven 项目为例,可以添加如下依赖:
<!-- 添加 Jsoup 依赖包 -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.11.2</version>
</dependency>
2、解析 HTML 文档
Jsoup 提供了多种方式来解析 HTML 文档。以下是一些基本的解析方法:
2.1、解析 HTML 字符串
String html = "<html><head><title>First parse</title></head><body><p>Parsed HTML into a doc.</p></body></html>";
Document doc = Jsoup.parse(html);
2.2、从 URL 加载 Document
Document doc = Jsoup.connect("http://example.com/").get();
String title = doc.title();
2.3、解析 body 片断
String html = "<div><p>Lorem ipsum.</p></div>";
Document doc = Jsoup.parseBodyFragment(html);
Element body = doc.body();
三、数据抽取
1、使用 DOM 方法遍历文档
一旦将 HTML 解析成 Document
对象,就可以使用类似于 DOM 的方法进行操作。
3.1、获取元素
Element content = doc.getElementById("content");
Elements links = content.getElementsByTag("a");
for (Element link : links) {
String linkHref = link.attr("href");
String linkText = link.text();
}
2、使用选择器语法查找元素
Jsoup 支持 CSS 选择器语法,可以非常方便地查找和操作元素。
3.2、CSS 选择器示例
Elements links = doc.select("a[href]"); // 带有 href 属性的 a 元素
Elements pngs = doc.select("img[src$=.png]"); // 扩展名为 .png 的图片
3、抽取属性、文本和 HTML
在解析获得 Document
实例对象,并查找到一些元素之后,你可能希望取得这些元素中的数据。
3.3、属性和内容抽取
String text = doc.body().text(); // 取得字符串中的文本
String linkHref = link.attr("href"); // 取得链接地址
String linkText = link.text(); // 取得链接地址中的文本
四、数据修改
1、设置属性值
在解析一个 Document
之后,你可能想修改其中的某些属性值,然后再保存到磁盘或输出到前台页面。
4.1、修改属性
doc.select("div.comments a").attr("rel", "nofollow"); // 为每个 a 元素添加 rel="nofollow"
2、设置元素的 HTML 内容
4.2、修改 HTML
Element div = doc.select("div").first();
div.html("<p>lorem ipsum</p>"); // 清除并设置新的内容
div.prepend("<p>First</p>"); // 在前面添加内容
div.append("<p>Last</p>"); // 在后面添加内容
五、总结
Jsoup 是一个功能强大的 Java HTML 解析库,它不仅能够解析 HTML,还能提供丰富的 API 来提取和操作数据。通过本文的介绍,你应该能够快速上手 Jsoup,并将其应用于你的 Java 爬虫项目中。
版权声明:本博客内容为原创,转载请保留原文链接及作者信息。
参考文章:
- Java 版网页爬虫之 Jsoup 使用详解
- Jsoup(一)Jsoup详解(官方) - 华仔Coding - 博客园