GuozhongCrawler系列教程 (2) CrawTaskBuilder具体解释
GuozhongCrawler是分层架构。要高速学习CrawlTask独立的配置多少要了解框架的源码。所以CrawTaskBuilder提供要更加扁平且易于理解的的方式创建CrawTask
方法具体资料
useThread
public CrawTaskBuilder useThread(int threadNum)
设置CrawlTask下载处理Request的线程数量- 參数:
threadNum-- 返回:
- CrawTaskBuilder
usePipeline
public CrawTaskBuilder usePipeline(java.lang.Class<? extends Pipeline> pipelineCls)
设置实现好的Pipeline类Class- 參数:
pipelineCls- 持久化处理类- 返回:
- CrawTaskBuilder
usePageRetryCount
public CrawTaskBuilder usePageRetryCount(int retryCount)
假设因为网络问题。请求url时可能会出现失败的情况。那么你设置最大又一次请求的次数默认又一次请求1次- 參数:
retryCount-- 返回:
- CrawTaskBuilder
usePageEncoding
public CrawTaskBuilder usePageEncoding(PageRequest.PageEncoding defaultEncoding)
一般抓取某个站点会有统一的编码,假设你不想每次都调用PageRequest.setPageEncoding的话,那么你能够设置一个默认的编码- 返回:
injectStartUrl
public CrawTaskBuilder injectStartUrl(java.lang.String url,
java.lang.Class<? extends PageProcessor> processorCls,
java.util.Map<java.lang.String,java.lang.Object> contextAttribute,
PageRequest.PageEncoding pageEncoding)加入种子URL设置附加參数和页面编码格式 每一个injectStartUrl方法注入的种子URL会用一个单独的StatContext包装。假设StatContext在抓取过程中不会产生较多新的跟进Request 那么推荐你使用useDynamicEntrance设置入口URL将会更加提升效率- 參数:
url-contextAttribute-PageEncoding-- 返回:
injectStartUrl
public CrawTaskBuilder injectStartUrl(java.lang.String url,
java.lang.Class<? extends PageProcessor> processorCls,
java.util.Map<java.lang.String,java.lang.Object> contextAttribute)加入种子URL并设置附加參数 每一个injectStartUrl方法注入的种子URL会用一个单独的StatContext包装。假设StatContext在抓取过程中不会产生较多新的跟进Request 那么推荐你使用useDynamicEntrance设置入口URL将会更加提升效率- 參数:
url-contextAttribute-- 返回:
injectStartUrl
public CrawTaskBuilder injectStartUrl(java.lang.String url,
java.lang.Class<? extends PageProcessor> processorCls)加入种子URL。并指定PageProcessor。 每一个injectStartUrl方法注入的种子URL会用一个单独的StatContext包装。假设StatContext在抓取过程中不会产生较多新的跟进Request 那么推荐你使用useDynamicEntrance设置入口URL将会更加提升效率- 參数:
url-- 返回:
useDynamicEntrance
public CrawTaskBuilder useDynamicEntrance(java.lang.Class<? extends DynamicEntrance> dynamicEntranceCls)
假设你想在单个StartContext中直接初始化跟进URL,或者让爬虫分批注入种子的话。那么DynamicEntrance提供了这种接口
- 參数:
dynamicEntranceCls- DynamicEntrance的继承实现类- 返回:
useQueuePriorityRequest
public CrawTaskBuilder useQueuePriorityRequest()
使用优先级队列。在一些抓取分页较多情景下推荐使用QueuePriorityRequest。由于 它能非常好的保证优先级高的Request优先被处理。从而防止队列金字塔式的膨胀- 返回:
useQueueDelayedPriorityRequest
public CrawTaskBuilder useQueueDelayedPriorityRequest(int delayInMilliseconds)
使用延迟优先级队列。和QueuePriorityRequest类似。但QueueDelayedPriorityRequest额外提供了延迟抓取的功能 在一些由于请求频率过快而被封的站点上推荐使用QueueDelayedPriorityRequest- 參数:
delayInMilliseconds- 每次取Request距离上次时间延迟delayInMilliseconds毫秒- 返回:
useTaskLifeListener
public CrawTaskBuilder useTaskLifeListener(TaskLifeListener listener)
设置监听器,监听爬虫的CrawlTask的onStart 和 onFinish。在此你能够发送邮件或者其它方式来知晓爬虫的运行情况- 參数:
listener-- 返回:
useCookie
public CrawTaskBuilder useCookie(java.util.Set<Cookie> cookies)
设置Cookie,当Driver创建时设置cookies。在须要登录情况下你能够将登录好的Cookies注入downloader
- 參数:
listener-- 返回:
addChromeDriverLifeListener
public void addChromeDriverLifeListener(ChromeDriverLifeListener chromeDriverLifeListener)
当你使用ChromeDownloader作为下载器时能够设置ChromeDriverLifeListener- 參数:
listener-
addWebDriverLifeListener
public void addWebDriverLifeListener(WebDriverLifeListener webDriverLifeListener)
当你使用WebDriverDownloader作为下载器时能够设置ChromeDriverLifeListener- 參数:
listener-
addHttpClientLifeListener
public void addHttpClientLifeListener(HttpClientLifeListener httpClientLifeListener)
当你使用默认的DefaultPageDownloader作为下载器时能够设置HttpClientLifeListener- 參数:
listener-
useProxyIpPool
public CrawTaskBuilder useProxyIpPool(java.lang.Class<? extends ProxyIpPool> proxyIpPoolCls,
int initSize,
long pastTime,
int max_use_count)使用代理IP切换机制时设置一个ProxyIpPool的实现类就可以。在封IP站点下推荐使用收费版代理IP效果更佳
- 參数:
proxyIpPoolCls-initSize- 每次代理IP缓冲池IP不足时载入IP的个数,推荐使用公式initSize=thread*5pastTime- 每一个IP自身的过期时间,当代理IP过期时间到的时候会被清除。这个值依据代理IP的质量决定max_use_count- 每一个代理IP最多使用的次数。推荐使用公式max_use_count=(目标站点连续请求才被封的次数)减去 2到3- 返回:
useProxyIpPoolInstance
public CrawTaskBuilder useProxyIpPoolInstance(ProxyIpPool proxyIpPool)
当然你也能够自己构造一个实例设置ProxyIpPool- 參数:
proxyIpPool-- 返回:
- 抛出:
java.lang.SecurityExceptionjava.lang.NoSuchMethodException
useTimer
public final CrawTaskBuilder useTimer(int hour,
long period,
int endHour)使用定时循环启动,使用24小时制- 參数:
hour- 从几点開始启动,假设当前时间小于改时间则等待到改时间启动period- 每次抓取时间间隔 单位毫秒endHour- 到几点结束- 返回:
useDownloadFileThread
public CrawTaskBuilder useDownloadFileThread(int thread)
设置同一时候下载文件的线程数 ,默认3个线程- 參数:
thread-- 返回:
- CrawTaskBuilder
useDownloadFileDelayTime
public CrawTaskBuilder useDownloadFileDelayTime(int millisecond)
文件下载延迟,默认300ms- 參数:
millisecond-- 返回:
build
public CrawlTask build()
配置完毕。就可以创建CrawlTask- 返回:
- CrawlTask
GuozhongCrawler系列教程 (2) CrawTaskBuilder具体解释的更多相关文章
- GuozhongCrawler系列教程 (1) 三大PageDownloader
GuozhongCrawler QQ群 202568714 教程源代码下载地址:http://pan.baidu.com/s/1pJBmerL GuozhongCrawler内置三大PageDown ...
- GuozhongCrawler系列教程 (4) StartContext具体解释
StartContext是注入时全部seed的上下文信息假设爬虫在抓取过程其中须要共享一些变量.那么可使用StartContext作为容器. 构造器具体资料 StartContext public S ...
- GuozhongCrawler系列教程 (5) TransactionRequest具体解释
为了实现和维护并发抓取的属性信息提供线程安全的事务请求.TransactionRequest是一个抽象类自己不能设置Processor,却须要实现 TransactionCallBack接口.Tran ...
- Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求
上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...
- C#微信公众号开发系列教程二(新手接入指南)
http://www.cnblogs.com/zskbll/p/4093954.html 此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可 ...
- 【ASP.NET Identity系列教程(一)】ASP.NET Identity入门
注:本文是[ASP.NET Identity系列教程]的第一篇.本系列教程详细.完整.深入地介绍了微软的ASP.NET Identity技术,描述了如何运用ASP.NET Identity实现应用程序 ...
- 【ASP.NET Identity系列教程(二)】运用ASP.NET Identity
注:本文是[ASP.NET Identity系列教程]的第二篇.本系列教程详细.完整.深入地介绍了微软的ASP.NET Identity技术,描述了如何运用ASP.NET Identity实现应用程序 ...
- 【ASP.NET Identity系列教程(三)】Identity高级技术
注:本文是[ASP.NET Identity系列教程]的第三篇.本系列教程详细.完整.深入地介绍了微软的ASP.NET Identity技术,描述了如何运用ASP.NET Identity实现应用程序 ...
- 随笔分类 - 无废话ExtJs系列教程
随笔分类 - 无废话ExtJs系列教程 摘自:http://www.cnblogs.com/iamlilinfeng/category/385121.html ExtJs 入门教程 摘要: extjs ...
随机推荐
- Bellman - Ford 算法解决最短路径问题
Bellman - Ford 算法: 一:基本算法 对于单源最短路径问题,上一篇文章中介绍了 Dijkstra 算法,但是由于 Dijkstra 算法局限于解决非负权的最短路径问题,对于带负权的图就力 ...
- USACO1.3.2修理牛棚
在学习一段时间贪心并写了一些贪心题之后,又一次看到了农夫和牛幸福美满的生活故事(雾).嘛,闲话少说,上题目 在一个暴风雨的夜晚,农民约翰的牛棚的屋顶.门被吹飞了. 好在许多牛正在度假,所以牛棚没有住满 ...
- Codeforces 914 C Travelling Salesman and Special Numbers
Discription The Travelling Salesman spends a lot of time travelling so he tends to get bored. To pas ...
- [Contest20180321]nonintersect
$\dfrac 2\pi$是个引人注目的数字,先来看看它到底是什么东西 假如有一条直线,它和题目所给的某条长度为$d$的线段夹角为$\theta$,那么线段在直线上的投影长度为$\left|d\cos ...
- 【kmp算法】poj2185 Milking Grid
先对每行求出所有可能的循环节长度(不需要整除). 然后取在所有行中都出现了的,且最小的长度为宽. 然后将每一行看作字符,对所有行求next数组,将n-next[n](对这些行来说最小的循环节长度)作为 ...
- [JOISC2014]JOIOJI
题目大意: 给你一串仅包含'J''O''I'的字符串,问满足三种字符出现次数相等的最大字串是多少? 思路: 用map存一下出现次数前缀和两两之差出现的最早位置,每次看一下当前的两两之差最早的出现位置是 ...
- 对三个数排序 Exercise06_05
import java.util.Scanner; /** * @author 冰樱梦 * 时间:2018年下半年 * 题目:对三个数排序 * */ public class Exercise06_0 ...
- Java使用POM一JAR包的形式管理JavaScript文件-WebJars
说明:原来JS框架还可以使用POM进行管理的.WebJars是一个很神奇的东西,可以让大家以JAR包的形式来使用前端的各种框架.组件. 什么是WebJars 什么是WebJars?WebJars是将客 ...
- gzip压缩目录
很遗憾,gzip不能针对整个目录进行压缩,只能递归压缩目录下的每一个文件. 当然,替代方案是只用tar进行打包,比如 tar cfz dir.tar.gz dirname
- Linux中线程的挂起与恢复(进程暂停)
http://www.linuxidc.com/Linux/2013-09/90156.htm 今天在网上查了一下Linux中对进程的挂起与恢复的实现,相关资料少的可怜,大部分都是粘贴复制.也没有完整 ...