Java爬虫:使用WebMagic构建最简单的爬虫项目

简介: Java爬虫:使用WebMagic构建最简单的爬虫项目

资料


WebMagic的架构设计参照了Scrapy

项目主页:http://webmagic.io/

github地址:https://github.com/code4craft/webmagic

项目文档:http://webmagic.io/docs/zh/

环境配置

使用 IntelliJ IDEA 新建maven项目

1、依赖文件配置

WebMagicSpider/pom.xml

<dependencies>
  <dependency>
        <groupId>us.codecraft</groupId>
        <artifactId>webmagic-core</artifactId>
        <version>0.7.3</version>
    </dependency>
    <dependency>
        <groupId>us.codecraft</groupId>
        <artifactId>webmagic-extension</artifactId>
        <version>0.7.3</version>
    </dependency>
    <dependency>
        <groupId>us.codecraft</groupId>
        <artifactId>webmagic-extension</artifactId>
        <version>0.7.3</version>
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

2、日志文件配置

WebMagicSpider/src/main/resources/log4j.properties


log4j.rootLogger=WARN, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

项目构建

1、爬虫程序编写

WebMagicSpider/src/main/java/BaiduPageProcessor.java

import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.pipeline.ConsolePipeline;
import us.codecraft.webmagic.pipeline.JsonFilePipeline;
import us.codecraft.webmagic.processor.PageProcessor;
public class BaiduPageProcessor implements PageProcessor {
    private Site site = Site.me()
            .setRetryTimes(1)
            .setSleepTime(1000)
            .setCharset("utf-8");
    public void process(Page page) {
        page.putField("title", page.getHtml().css("title", "text").toString());
    }
    public Site getSite() {
        return site;
    }
    public static void main(String[] args) {
        Spider.create(new BaiduPageProcessor())
                .addUrl("http://www.baidu.com/")
                .addPipeline(new ConsolePipeline())
                .addPipeline(new JsonFilePipeline("/Users/qmp/myproject/WebMagicSpider"))
                .thread(1)
                .run();
    }
}

2、执行程序


控制台输出


get page: http://www.baidu.com/
title:  百度一下,你就知道


文件输出


{"title":"百度一下,你就知道"}


相关文章
|
4天前
|
Java Maven
java修改当前项目的maven仓库地址为国内
修改当前项目的maven仓库地址为国内
|
10天前
|
IDE Java API
使用Java Web技术构建RESTful API的实践指南
使用Java Web技术构建RESTful API的实践指南
|
28天前
|
JavaScript Java 应用服务中间件
centos部署vue项目(java,tomcat环境的搭建)
centos部署vue项目(java,tomcat环境的搭建)
16 0
|
2月前
|
Java API Maven
JFinal5+Jetty2009+IDEA2020+Java8的非Maven-Demo项目
JFinal5+Jetty2009+IDEA2020+Java8的非Maven-Demo项目
16 1
|
6天前
|
监控 IDE Java
Java项目调试实战:如何高效调试Spring Boot项目中的GET请求,并通过equalsIgnoreCase()解决大小写不一致问题
Java项目调试实战:如何高效调试Spring Boot项目中的GET请求,并通过equalsIgnoreCase()解决大小写不一致问题
20 0
|
3天前
|
Java 网络安全 开发者
【Docker】5、Dockerfile 自定义镜像(镜像结构、Dockerfile 语法、把 Java 项目弄成镜像)
【Docker】5、Dockerfile 自定义镜像(镜像结构、Dockerfile 语法、把 Java 项目弄成镜像)
12 0
|
4天前
|
安全 前端开发 JavaScript
JAVA原生交易所系统开发正式版丨原生交易所系统开发指南教程/源码项目
确定项目需求:明确交易所系统的功能需求,包括支持的交易对、交易类型、用户操作流程、安全性需求等。
|
7天前
|
小程序 Java BI
|
12天前
|
数据采集 存储 分布式计算
使用Hadoop和Nutch构建音频爬虫:实现数据收集与分析
使用Hadoop和Nutch构建音频爬虫:实现数据收集与分析
|
28天前
|
缓存 前端开发 Java
java项目接口重复提交解决方案
java项目接口重复提交解决方案
24 0