分布式网络爬虫架构-技术选型
来源:互联网 发布:马来西亚第二家园 知乎 编辑:程序博客网 时间:2024/06/05 05:11
- 分布式爬虫:Nutch,主要依赖Hadoop,存储于Mysql,Hbase,Hdfs等。
- 单机爬虫:Crawler4j、WebMagic、WebCollector
- 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
- 分布式网络爬虫架构-技术选型
- 架构迁移技术选型
- java技术架构选型
- 技术架构选型
- java技术架构选型
- 浅谈中小企网络应用服务器端技术架构选型
- 分布式爬虫架构设计
- android 技术架构选型参考
- 基于Hadoop 的分布式网络爬虫技术学习笔记
- 基于Hadoop 的分布式网络爬虫技术学习笔记
- 基于Hadoop 的分布式网络爬虫技术学习笔记
- 分布式网络爬虫浅见
- 网络爬虫架构分析
- 如何进行架构技术方案选型?
- App架构设计经验谈:技术选型
- App架构设计经验谈:技术选型
- App架构设计经验谈:技术选型
- 安卓项目架构与技术选型
- 不使用第三方分享框架实现分享功能
- P2P技术
- Android Studio系列-签名打包
- Oozie工作流程定义详解
- ERP知识点(1)软件功能
- 分布式网络爬虫架构-技术选型
- iOS中定时器NSTimer使用
- svn commit failed: Could not use external editor to fetch log message
- python 发送邮件
- [Leetcode]Missing Ranges
- hdu4415 贪心好题
- testlink安装全攻略
- poi_科学计数法
- StoryBoard学习3 tableview实现