简单介绍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));
    }
}
相关推荐
Seven971 分钟前
剑指offer-34、第⼀次出现的字符
java
摇滚侠9 分钟前
Spring Boot 3零基础教程,properties文件中配置和类的属性绑定,笔记14
java·spring boot·笔记
星光一影18 分钟前
HIS系统天花板,十大核心模块,门诊/住院/医保全流程打通,医院数字化转型首选
java·spring boot·后端·sql·elementui·html·scss
JAVA学习通32 分钟前
零基础OSS组件(Java)
java·linux·leetcode
草莓熊Lotso35 分钟前
《算法闯关指南:优选算法--二分查找》--19.x的平方根,20.搜索插入位置
java·开发语言·c++·算法
YJlio40 分钟前
Process Monitor 学习笔记(5.7):长时间运行追踪与日志文件体积的控制
java·笔记·学习
失散1342 分钟前
分布式专题——45 ElasticSearch基础数据管理详解
java·分布式·elasticsearch·架构
没有bug.的程序员43 分钟前
分布式监控体系:从指标采集到智能告警的完整之道
java·分布式·告警·监控体系·指标采集
是良辰43 分钟前
Linux 服务器NFS文件共享
运维·服务器
沐浴露z1 小时前
【深入理解计算机网络11】应用层详解:DNS,WWW,HTTP
服务器·网络协议·计算机网络·http