一、前言
本文将探讨如何使用Spring Boot 结合 Jsoup 来构建高效的网络爬虫。通过本文的学习,大家将能够掌握利用Spring Boot和Jsoup进行网络爬虫开发的基本方法和技巧。
二、Jsoup简介
Jsoup 是一款用 Java 编写的 HTML 解析器,它提供了一种简单而强大的方式来解析和操作 HTML 文档。Jsoup 适用于需要从网页中提取数据、修改 HTML 内容或进行网页爬虫等场景。
三、Jsoup主要功能
1.解析HTML
Jsoup 可以从 URL、文件或字符串中解析 HTML。它支持直接连接到网站获取 HTML 内容,也可以从本地文件或字符串中加载 HTML。
Jsoup 能够解析不规范的 HTML,如缺少闭合标签、隐式标签等,并生成一个结构合理的 DOM。
2.数据抓取
能够根据元素的标签名、ID、类名、属性等条件提取数据。
常用的包括:通过类似于 DOM 的方法,遍历 HTML,使用 CSS 选择器语法来查找 HTML 元素。
同时Jsoup 还支持使用正则表达式来查找和提取数据。
3.操作HTML
Jsoup 支持对 HTML 元素、属性和文本进行修改,例如添加、删除或替换元素,修改元素的文本内容或属性值等。
Jsoup 可以用于清理用户提交的 HTML 内容,以防止跨站脚本(XSS)攻击。
四、Spring Boot集成Jsoup实战
1.添加依赖
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.17.2</version>
</dependency>
2.获取公众号文章
获取Document对象
Document document = Jsoup.connect(url)
.userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36")
.timeout(10000)
.get();
userAgent 模拟浏览器请求,绕过基础反爬
timeout 超时时间
假如在服务器上面遇到SSL问题,可以使用sslSocketFactory,构建一个SSLSocketFactory对象,跳过SSL的验证
3.读取文章内容
我们以公众号为例子,先分析一下文章的整体结构
找到内容所在的一些id
// 文章封面图链接
String coverUrl = document.select("meta[property=\"og:image\"]").get(0).attr("content");
// 简介
String description = document.select("meta[property=\"og:description\"]").get(0).attr("content");
// 文章标题
String title = document.select("meta[property=\"og:title\"]").get(0).attr("content");
// 公众号名称
String name = document.getElementById("js_name").text();
// 文章内容
Element elementBody = document.body();
Element article = elementBody.getElementById("js_article");
此时article就是全文的内容。
如果不需要里面的哪一块内容,可以从Element对象中移除
方法:void remove()
需要额外添加一些内容可以使用
方法:Element append(String html)
这样子就获取到了这个内容了,直接导入后台,同时像微博、新浪新闻等都可以使用,感兴趣的小伙伴可以试试。