分布式网络爬虫架构-技术选型

来源:互联网 发布:马来西亚第二家园 知乎 编辑:程序博客网 时间:2024/06/05 05:11

  1.    分布式爬虫:Nutch,主要依赖Hadoop,存储于Mysql,Hbase,Hdfs等。
  2.    单机爬虫:Crawler4j、WebMagic、WebCollector
  3.    WebMagic ,若分布式,需要集成插件webmagic-extension,通过redis来存储URL。

             webmagic的使用文档:http://webmagic.io/docs/

             webmagic的设计文档:webmagic的设计机制及原理-如何开发一个Java爬虫


package com.ifeng.auto.webmagic;import java.util.List;import us.codecraft.webmagic.Page;import us.codecraft.webmagic.Site;import us.codecraft.webmagic.Spider;import us.codecraft.webmagic.pipeline.ConsolePipeline;import us.codecraft.webmagic.pipeline.FilePipeline;import us.codecraft.webmagic.processor.PageProcessor;/** * 抓取内容:图片、地点、时间、图片文字,用户基本信息 * 抓取目标:面包旅行(例:http://web.breadtrip.com/trips/2387672324/) * @author yccn * */public class ImgBreadtripPageProcessor implements PageProcessor {    private Site site = Site.me().setRetryTimes(3).setSleepTime(1000);    @Override    public void process(Page page) {            List<String> links = page.getHtml().links().regex("http://web\\.breadtrip\\.com/trips/\\d+/").all();        page.addTargetRequests(links);        page.putField("title",  page.getHtml().xpath("//title/text()").toString().trim());        page.putField("keywords", page.getHtml().xpath("//meta[@name='description']/@content").toString().trim());        page.putField("description", page.getHtml().xpath("meta[@name='keywords']/@content").toString().trim());               page.putField("days", page.getHtml().xpath("//div[@class='trip-days']/h3/span[1]/text()").all());            page.putField("cons", page.getHtml().xpath("//div[@class='waypoint']/p[@class='text photo-comment']/text()").all());           page.putField("pics", page.getHtml().xpath("//a[@class='fancy-group']/img/@data-original").all());           page.putField("times", page.getHtml().xpath("//div[@class='time float-left']/text()").all());           page.putField("sites", page.getHtml().xpath("//span[@class='one-row-ellipsis']/text()").all());             }    @Override    public Site getSite() {        return site;    }    public static void main(String[] args) {        Spider.create(new ImgBreadtripPageProcessor())                .addUrl("http://web.breadtrip.com/explore/")                //.addPipeline(new ConsolePipeline())                .addPipeline(new FilePipeline("/Users/yccn/tmp/webmagic/"))                //.thread(1)                .run();    }}




0 0
原创粉丝点击