jsoup框架技术文档--java爬虫--架构体系

news/2024/7/19 11:54:24 标签: 爬虫, 架构

阿丹:

        在学习以及认知使用一个新技术之前一定要搞清楚有关框架的架构体系。了解一下该技术的底层会对后面编写代码以及寻找报错都是很有用处的,前期做的铺垫多一点,后期开发的时候就很方便。

jsoup框架的关键组件

JSoup框架的关键组件主要包括以下几个:

  1. Downloader:这是JSoup框架中负责从互联网上下载页面的组件。在下载页面后,将由PageProcessor进行解析。WebMagic默认使用Apache HttpClient作为其下载工具。
  2. PageProcessor:这是JSoup框架中负责解析页面的组件,包括抽取有用信息以及发现新的链接。它基于Jsoup进行HTML解析,并可定制用于处理每个站点和每个页面的不同需求。PageProcessor对于每个站点每个页面都不一样,是需要使用者定制的部分。它也提供了Jsoup的API接口,通过DOM, CSS以及类似于jQuery的操作方法来取出和操作数据。
  3. Scheduler:这是JSoup框架中负责管理待抓取的URL,以及一些去重工作的组件。WebMagic默认提供了JDK的内存队列来管理URL,并用集合来进行去重。也支持使用Redis进行分布式管理。除非项目有一些特殊的分布式需求,否则无需自己定制Scheduler。

在以上三个组件中,Downloader和Scheduler相对比较稳定,而PageProcessor需要根据具体的使用场景来进行定制开发,以应对不同网站结构和数据抽取规则的需求。

工作原理、工作流程

使用jsoup进行网页数据抓取的过程可以概括为以下几个步骤:

  1. 导入Jsoup库:首先需要在项目中导入Jsoup库,可以通过Maven或Gradle等构建工具来实现。
  2. 发送HTTP请求:使用Jsoup库中的Document类提供的静态方法connect()来发送HTTP请求,指定需要访问的URL地址。例如:Document doc = Jsoup.connect("http://www.example.com").get();
  3. 解析HTML响应:Jsoup库使用HTML解析器将服务器返回的HTML响应进行解析,将其转化成DOM树结构。解析器支持HTML5规范,可以准确地解析出HTML页面的结构和数据。
  4. 定位和提取数据:通过选择器语法,如CSS或jQuery,定位和提取DOM树中的目标元素和属性值。例如,可以使用doc.select("div.content")来选择class属性为“content”的div元素,然后使用Element或Attr类的方法提取其中的具体数据。
  5. 数据处理和存储:将提取到的数据进行进一步的处理,如清洗、转换等操作,最后存储到文件、数据库或内存中。例如,可以使用BufferedWriter类将提取到的文本数据写入到本地文件中,或者使用JDBC连接数据库将数据存储到数据库表中。

在实际应用中,为了提高抓取效率,可以使用Jsoup库提供的并发功能,同时对多个URL地址发送请求并解析其响应数据。另外,Jsoup库还提供了许多实用的功能,如设置请求头信息、处理Cookies、重定向等。需要注意的是,由于网页结构的变化可能会导致定位和提取数据的方式有所不同,因此在使用Jsoup库时需要注意网页的结构和选择器的使用技巧。

jsoup是如何解析的?

Jsoup是一个Java库,用于解析HTML文档,它提供了一个非常方便的API,可以将HTML文档转换为结构化的数据,方便进行进一步的处理和操作。

Jsoup的解析过程可以分为以下几个步骤:

  1. 发送HTTP请求:使用Jsoup库中的Document类提供的静态方法connect()来发送HTTP请求,指定需要访问的URL地址。例如:Document doc = Jsoup.connect("http://www.example.com").get();
  2. 解析HTML响应:Jsoup库使用HTML解析器将服务器返回的HTML响应进行解析,将其转化成DOM树结构。解析器支持HTML5规范,可以准确地解析出HTML页面的结构和数据。
  3. 定位和提取数据:通过选择器语法,如CSS或jQuery,定位和提取DOM树中的目标元素和属性值。例如,可以使用doc.select("div.content")来选择class属性为“content”的div元素,然后使用Element或Attr类的方法提取其中的具体数据。
  4. 数据处理和存储:将提取到的数据进行进一步的处理,如清洗、转换等操作,最后存储到文件、数据库或内存中。例如,可以使用BufferedWriter类将提取到的文本数据写入到本地文件中,或者使用JDBC连接数据库将数据存储到数据库表中。

Jsoup的解析过程比较简单方便,同时也提供了许多实用的功能,如设置请求头信息、处理Cookies、重定向等。它可以将HTML文档转换成结构化的数据,方便进行进一步的处理和操作。


http://www.niftyadmin.cn/n/5026070.html

相关文章

SpringBoot整合Zookeeper做分布式锁

环境准备 zookeeper准备 首先你需要一个zookeeper服务器,或者是一个zookeeper集群。我已经准备好了一个zookeeper集群,如图: 当然一个单节点的zookeeper也可以搭建分布式锁。如果你还没有zookeeper,那么你可以参考我写的搭建z…

输电线路故障诊断(Python代码,逻辑回归、决策树、随机森林、XGBoost和支持向量机五种不同方法诊断)

效果视频:输电线路故障诊断(Python代码,逻辑回归、决策树、随机森林、XGBoost和支持向量机五种不同方法诊断)_哔哩哔哩_bilibili 1.数据 仿真平台 仿真模型分别获取单相接地故障、两相接地故障、两相间短路故障、三相接地故障、…

机器学习(14)---逻辑回归(含手写公式、推导过程和手写例题)

逻辑回归 一、逻辑回归概述二、模型、策略和优化(手写)三、w和b的梯度下降公式推导四、例题分析4.1 题目4.2 解答 一、逻辑回归概述 1. 逻辑回归也称作logistic回归分析,是一种广义的线性回归分析模型,属于机器学习中的监督学习。…

ARM架构-伪指令、伪操作、ATPCS协议

汇编中的符号: 1.指令:能够编译生成一条32位的机器码且能被CPU识别和执行 2.伪指令:本身不是指令,编译器可以将其替换成若千条指令 3.伪操作:不会生成代码,只是在编译阶段告诉编译器怎么编译(例如&#x…

《深入PostgreSQL的存储引擎:原理与性能》

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾猫头虎建议程序员必备技术栈一览表📖: 🛠️ 全栈技术 Full Stack: &#x1f4da…

【服务器】带外管理口 iDRAC接口

服务器带外管理口 也就是标识为iDRAC的接口 使用时,将笔记本直接通过网线连接到这个接口 笔记本上设置以太网连接的属性为手动IP,例如192.168.0.100 然后ping 192.168.0.120(服务器的默认的带外IP) 理论上应该是好使的

windows linux子系统 docker无法启动

windows安装Linux子系统后,使用sudo service docker start启动后,再使用sudo service docker status查看docker状态,docker无法启动,使用sudo dockerd查看错误信息如下: failed to start daemon: Error initializing …

麒麟v10安装mysql(ARM架构)

下载MYSQL安装包 华为开源镜像站_软件开发服务_华为云 上面的选择一个下载 或者用命令下载 wget https://repo.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/database/mysql-5.7.27-1.el7.aarch64.rpm 检查是否已经安装MySQL rpm -qa | grep mysql将包卸载掉 rpm -…