zoukankan      html  css  js  c++  java
  • 实现PageProcessor

    4.1 实现PageProcessor

    这部分我们直接通过GithubRepoPageProcessor这个例子来介绍PageProcessor的编写方式。我将PageProcessor的定制分为三个部分,分别是爬虫的配置、页面元素的抽取和链接的发现。

    public class GithubRepoPageProcessor implements PageProcessor {

     

        // 部分一:抓取网站的相关配置,包括编码、抓取间隔、重试次数等

        private Site site = Site.me().setRetryTimes(3).setSleepTime(1000);

     

        @Override

        // process是定制爬虫逻辑的核心接口,在这里编写抽取逻辑

        public void process(Page page) {

            // 部分二:定义如何抽取页面信息,并保存下来

            page.putField("author", page.getUrl().regex("https://github\.com/(\w+)/.*").toString());

            page.putField("name", page.getHtml().xpath("//h1[@class='entry-title public']/strong/a/text()").toString());

            if (page.getResultItems().get("name") == null) {

                //skip this page

                page.setSkip(true);

            }

            page.putField("readme", page.getHtml().xpath("//div[@id='readme']/tidyText()"));

     

            // 部分三:从页面发现后续的url地址来抓取

            page.addTargetRequests(page.getHtml().links().regex("(https://github\.com/\w+/\w+)").all());

        }

     

        @Override

        public Site getSite() {

            return site;

        }

     

        public static void main(String[] args) {

     

            Spider.create(new GithubRepoPageProcessor())

                    //从"https://github.com/code4craft"开始抓

                    .addUrl("https://github.com/code4craft")

                    //开启5个线程抓取

                    .thread(5)

                    //启动爬虫

                    .run();

        }

    }

  • 相关阅读:
    D3.js中对array的使用
    kibana中信息分类查询显示的方法
    JAVA异常机制简述
    Google Web Toolkit(GWT) 在windows下环境搭建
    zico源代码分析(二) 数据读取和解析部分
    zico源代码分析(一) 数据接收和存储部分
    eclipse中导入zico Maven项目
    Zorka和zico实现不同主机之间的交互
    【转载】使用logstash+elasticsearch+kibana快速搭建日志平台
    LA 3644 易爆物 并查集
  • 原文地址:https://www.cnblogs.com/cnblog-long/p/5376495.html
Copyright © 2011-2022 走看看