简单介绍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));
    }
}
相关推荐
S-X-S36 分钟前
算法总结-数组/字符串
java·数据结构·算法
linwq841 分钟前
设计模式学习(二)
java·学习·设计模式
桦说编程1 小时前
CompletableFuture 超时功能有大坑!使用不当直接生产事故!
java·性能优化·函数式编程·并发编程
@_@哆啦A梦1 小时前
Redis 基础命令
java·数据库·redis
m0_465215792 小时前
TCP & UDP Service Model
服务器·网络·tcp/ip
字节全栈_rJF2 小时前
性能测试 —— Tomcat监控与调优:status页监控_tomcat 自带监控
java·tomcat
爱编程的小新☆3 小时前
Java篇之继承
java·开发语言
gentle coder3 小时前
Redis_Redission的入门案例、多主案例搭建、分布式锁进行加锁、解锁底层源码解析
java·redis·分布式
萝卜青今天也要开心4 小时前
读书笔记-《Redis设计与实现》(一)数据结构与对象(下)
java·数据结构·redis·学习
customer084 小时前
【开源免费】基于SpringBoot+Vue.JS景区民宿预约系统(JAVA毕业设计)
java·vue.js·spring boot·后端·开源