当前位置: 首页 > news >正文

Spring Boot 使用 WebMagic 爬虫框架入门

1. 创建 Spring Boot 项目

使用 Spring Initializr 创建一个 Spring Boot 项目,选择需要的依赖,如 Spring Web 等。

2. 添加 WebMagic 依赖

在项目的 pom.xml 文件中添加 WebMagic 的核心和扩展依赖:

<dependency><groupId>us.codecraft</groupId><artifactId>webmagic-core</artifactId><version>0.10.0</version>
</dependency>
<dependency><groupId>us.codecraft</groupId><artifactId>webmagic-extension</artifactId><version>0.10.0</version>
</dependency>

3. 编写爬虫处理器

创建一个类实现 PageProcessor 接口,重写 process 方法和 getSite 方法。

import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;public class MyPageProcessor implements PageProcessor {// 抓取网站的相关配置private Site site = Site.me().setRetryTimes(3).setSleepTime(1000);@Overridepublic void process(Page page) {// 定义如何抽取页面信息,并保存下来page.putField("title", page.getHtml().xpath("//title/text()").toString());page.putField("content", page.getHtml().css("div.content").toString());// 从页面发现后续的 url 地址来抓取page.addTargetRequests(page.getHtml().css("a", "href").all());}@Overridepublic Site getSite() {return site;}public static void main(String[] args) {Spider.create(new MyPageProcessor()).run();}
}

4. 配置 Pipeline

Pipeline 用于处理爬取到的数据。可以创建一个自定义的 Pipeline,将数据存储到数据库或其他位置。

import us.codecraft.webmagic.ResultItems;
import us.codecraft.webmagic.Task;
import us.codecraft.webmagic.pipeline.Pipeline;public class MyPipeline implements Pipeline {@Overridepublic void process(ResultItems resultItems, Task task) {// 获取爬取的数据String title = resultItems.get("title");String content = resultItems.get("content");// 将数据存储到数据库或其他操作System.out.println("标题:" + title + ", 内容:" + content);}
}

5. 启动爬虫

在 Spring Boot 的启动类中,调用爬虫的启动方法。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import us.codecraft.webmagic.Spider;@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);// 启动爬虫Spider.create(new MyPageProcessor()).addPipeline(new MyPipeline()).run();}
}

6. 注意事项

  • 网站反爬虫机制:在爬取网站时,要注意遵守网站的规则和反爬虫机制,合理设置爬取的间隔时间和重试次数,避免对网站造成过大压力。

  • 数据存储:根据实际需求选择合适的数据存储方式,如数据库、文件等,并在 Pipeline 中实现相应的存储逻辑。

  • 异常处理:在爬虫过程中可能会出现网络异常、解析异常等情况,需要添加适当的异常处理逻辑,保证爬虫的稳定运行。

相关文章:

  • 利用无事务方式插入数据库解决并发插入问题
  • 深入解析 .NET Kestrel:高性能 Web 服务器的架构与最佳实践
  • 论文笔记——QWen2.5 VL
  • 二、HTML
  • curl详解
  • 从工厂到生活:算法 × 深度学习,正在改写自动化的底层逻辑
  • 机器人--架构及设备
  • 【数据结构】--- 双向链表的增删查改
  • spring-boot-maven-plugin 将spring打包成单个jar的工作原理
  • 25_04_30Linux架构篇、第1章_02源码编译安装Apache HTTP Server 最新稳定版本是 2.4.62
  • MySQL基础关键_002_DQL(一)
  • 湖北理元理律师事务所观察:民生债务问题的系统性解法
  • 【SpringBoot】基于mybatisPlus的博客管理系统(2)
  • 《操作系统真象还原》第十一章——用户进程
  • systemd和OpenSSH
  • (初探)强化学习路径规划的理论基础与代码实现
  • 介绍一下Files类的常用方法
  • verilog_testbench技巧
  • AI技术在当代互联网行业的崛起与重要性!
  • CUDA编程 - 如何使用 CUDA 流在 GPU 设备上并发执行多个内核 - 如何应用到自己的项目中 - concurrentKernels
  • 五一当天1372对新人在沪喜结连理,涉外婚姻登记全市铺开
  • “五一”假期首日迎出游高峰:火车站人流“堪比春运”,热门景区门票预订量同比增三成
  • 铁路12306回应“五一前大量放票”传闻:个别方向和区段出现新增票额,均即时进入系统重新发售
  • 五一假期,这些短剧值得一刷
  • 涉嫌严重违纪违法,57岁证监会副主席王建军被查
  • 人物|德国新外长关键词:总理忠实盟友、外交防务专家、大西洋主义者