Spring Boot 使用 WebMagic 爬虫框架入门

1. 创建 Spring Boot 项目

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

2. 添加 WebMagic 依赖

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

XML 复制代码
<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 方法。

java 复制代码
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);

    @Override
    public 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());
    }

    @Override
    public Site getSite() {
        return site;
    }

    public static void main(String[] args) {
        Spider.create(new MyPageProcessor()).run();
    }
}

4. 配置 Pipeline

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

java 复制代码
import us.codecraft.webmagic.ResultItems;
import us.codecraft.webmagic.Task;
import us.codecraft.webmagic.pipeline.Pipeline;

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

5. 启动爬虫

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

java 复制代码
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 中实现相应的存储逻辑。

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

相关推荐
Uranus^5 分钟前
Spring Boot与Kafka集成实践:实现高效消息队列
spring boot·kafka·消息队列·分布式系统
小鸡脚来咯10 分钟前
MVCC实现原理
java·开发语言·数据库
灏瀚星空16 分钟前
我的第1个爬虫程序——豆瓣Top250爬虫的详细步骤指南
爬虫
小鹭同学_24 分钟前
Java基础 Day20
java·开发语言
浩浩测试一下43 分钟前
Apache OFBiz 17.12.01 的远程命令执行漏洞 -Java 反序列化 + XML-RPC 请求机制
xml·java·安全·web安全·网络安全·apache·安全架构
27669582921 小时前
开盘啦 APP 抓包 逆向分析
java·python·app抓包·抓包分析·开盘啦
啥都想学的又啥都不会的研究生1 小时前
log日志最佳实践
java·spring boot·后端·spring·junit·log4j·logback
白开水不加冰1 小时前
JVM 的垃圾回收器
java·jvm
qq_12498707531 小时前
基于Spring boot+vue的中医养生系统的设计与实现(源码+论文+部署+安装+调试+售后)
java·vue.js·spring boot·后端·毕业设计
为美好的生活献上中指1 小时前
java每日精进 5.25【Redis缓存】
java·redis·缓存