简单介绍webmagic的使用

一、引入webmagic包

复制代码
    <dependency>
      <groupId>us.codecraft</groupId>
      <artifactId>webmagic-core</artifactId>
      <version>${webmagic.core.version}</version>
      <exclusions>
        <exclusion>
          <artifactId>slf4j-api</artifactId>
          <groupId>org.slf4j</groupId>
        </exclusion>
      </exclusions>
    </dependency>

二、启动爬虫

复制代码
        Request request = new Request();
        request.setMethod("GET");
        request.setUrl("http://***");
        request.addHeader("client_signature", content);
        Spider.create(new MPageProcessor())
                .addRequest(request)
                .addPipeline(new MPipeline(start))
                .thread(1)
                .start();

三、PageProcessor

当然还有更多html内容的分析,看其它文章

复制代码
public class MPageProcessor implements PageProcessor {
    private  Site site = Site.me().setSleepTime(3000).setTimeOut(120000);
    @Override
    public void process(Page page) {
        String text = page.getRawText();
//        System.out.println(text);
        JSONObject result = JSONUtil.parseObj(text);
        page.putField("data", result.getJSONObject("data"));
    }

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

四、Pipeline

复制代码
public class MPipeline implements Pipeline {

    private Date start;
    public MPipeline(Date start){
        this.start = start;
    }

    @Override
    public void process(ResultItems resultItems, Task task) {
        JSONObject data = resultItems.get("data");
        int total = data.getJSONObject("queryBean").getInt("total");
        System.out.println(total);
        Date end = new Date();
        System.out.println(DateUtil.format(end, "yyyy-MM-dd HH:mm:ss.SSSSSS"));
        System.out.println("总耗时:"+DateUtil.formatBetween(start, end, BetweenFormatter.Level.MILLISECOND));
    }
}
相关推荐
Jinkxs几秒前
Java 架构 02:DDD 领域模型设计实战(限界上下文划分)
java·开发语言·架构
百锦再3 分钟前
国产数据库的平替亮点——关系型数据库架构适配
android·java·前端·数据库·sql·算法·数据库架构
IT19956 分钟前
C++使用“长度前缀法”解决TCP“粘包 / 拆包”问题
服务器·网络·c++·tcp/ip
德迅云安全—珍珍7 分钟前
物理服务器、云服务器、裸金属服务器的区别
运维·服务器
爱笑的眼睛1112 分钟前
文本分类的范式演进:从统计概率到语言模型提示工程
java·人工智能·python·ai
好记忆不如烂笔头abc23 分钟前
超微服务器的ipmi调整风扇运行模式
运维·服务器
周杰伦_Jay25 分钟前
【Go/Python/Java】基础语法+核心特性对比
java·python·golang
sszdlbw27 分钟前
后端springboot框架入门学习--第一篇
java·spring boot·学习
一个响当当的名号29 分钟前
ASP.NET 期末突击
运维·服务器
小鹿学程序30 分钟前
jdk配置完之后java -version还是默认的jdk版本如何更改
java·开发语言·python