• java 爬虫 WebMagic(二)-PageProcessor


    PageProcessor是WebMagic中最重要的一个,它用来编写爬取的规则,爬什么?怎么爬?

    首先PageProcessor是一个接口,具体实现需要集成这个接口,重写它的process

    例如:

    public class MyProcesser implements PageProcessor {
    
        private Site site = Site.me().setTimeOut(10000).setRetryTimes(10).setCycleRetryTimes(10).setSleepTime(1000).setRetrySleepTime(3000).setCharset("UTF-8");
    @Override public void process(Page page) {
       //方式一:获取Json Json json= page.getJson();
       String jsonStr=json.jsonPath("$.a.b.c")All();
       //方式二: 获取document
       
    Document document = page.getHtml().getDocument();
       String text = document.getElementById("id").text();
       ......
       //将新的连接加入爬取队列
       page.addTargetRequest(request);
       //将抓取数据发送到Pipeline, key-value结构
       page.putField("key",value);
       }

    @Override
    public Site getSite() {
         //设置Header,cookie等Requset头部。 site.setUserAgent(
    "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3722.400 QQBrowser/10.5.3738.400"); site.addHeader("accpet","text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"); site.addCookie("cookie2","15f21e08ce7d25e0551f6c74e460a3d3");
          return site; } }

    site这个对象必须要有,不然会报错,它封装了爬取的配置如:

    setTimeOut(1000)  表示请求timeOut时,1秒后重试;

    setSleepTime(1000)  表示每次请求间隔1秒;

    以及设置Header,cookie等信息;

  • 相关阅读:
    Win7 64位环境下安装mysql5.6
    High CPU Usage 原因及分析
    SQL Server 2012 AlwaysOn 亲身实历记
    elasticsearch的简单介绍
    url().openStream 的超时问题处理
    关于数据库tinyint 字段的值范围
    linux磁盘空间不足预警的相关问题
    关于Dubbo一个接口多个实现的解决方案
    一个优化登录判断的技巧
    SimpleDateFormat的线程安全问题与解决方案
  • 原文地址:https://www.cnblogs.com/yhood/p/11598449.html
Copyright © 2020-2023  润新知