灵活的Java爬虫框架

WebMagic是一个简单灵活的爬虫框架,涵盖爬虫的整个生命周期:下载、URL管理、内容提取和持久化

Spider.create(new GithubRepoPageProcessor())
    .addUrl("https://github.com/code4craft")
    .addPipeline(new ConsolePipeline())
    .run();

核心特性

🚀

简单易用

提供简洁的API,快速上手,几行代码即可构建强大的爬虫程序

🔧

高度灵活

模块化设计,易于扩展,支持自定义下载器、处理器和管道

多线程支持

内置多线程支持,提高爬取效率,支持分布式部署

🎯

注解驱动

支持注解方式配置POJO爬虫,让代码更加简洁优雅

🔍

强大提取

支持XPath、CSS选择器、正则表达式等多种内容提取方式

🔌

易于集成

提供多种数据持久化方案

快速开始

1. 添加Maven依赖

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

2. 编写PageProcessor

public class GithubRepoPageProcessor implements PageProcessor {
    private Site site = Site.me().setRetryTimes(3).setSleepTime(100);

    @Override
    public void process(Page page) {
        page.addTargetRequests(page.getHtml().links()
            .regex("(https://github\\.com/\\w+/\\w+)").all());
        page.putField("author", page.getUrl()
            .regex("https://github\\.com/(\\w+)/.*").toString());
        page.putField("name", page.getHtml()
            .xpath("//h1[@class='public']/strong/a/text()").toString());
    }

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

3. 启动爬虫

Spider.create(new GithubRepoPageProcessor())
    .addUrl("https://github.com/code4craft")
    .addPipeline(new ConsolePipeline())
    .thread(5)
    .run();

文档与资源

📚 中文文档

完整的中文使用指南和API文档

查看文档

📖 English Docs

Complete English documentation and guides

View Docs

🔍 JavaDoc

详细的API参考文档

API文档

💬 社区支持

GitHub Issues 和 QQ群讨论

提交问题