文档章节

GuozhongCrawler系列教程 (2) CrawTaskBuilder详解

郭钟
 郭钟
发布于 2015/06/08 17:35
字数 1410
阅读 51
收藏 0

    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*5

    • pastTime - 每个IP自身的过期时间,当代理IP过期时间到的时候会被清除。这个值根据代理IP的质量决定

    • max_use_count - 每个代理IP最多使用的次数。推荐使用公式max_use_count=(目标网站连续请求才被封的次数)减去  2到3

    • 返回:


  • useProxyIpPoolInstance

    public CrawTaskBuilder useProxyIpPoolInstance(ProxyIpPool proxyIpPool)

    当然你也可以自己构造一个实例设置ProxyIpPool

    • 参数:

    • proxyIpPool -

    • 返回:


    • 抛出:

    • java.lang.SecurityException

    • java.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


© 著作权归作者所有

共有 人打赏支持
郭钟
粉丝 17
博文 12
码字总数 7550
作品 1
北京
架构师
私信 提问
GuozhongCrawler实现一个完整爬虫

经过上一节开发环境搭建中的百度新闻的爬虫例子,相信大家已经对GuozhongCrawler简洁的API产生浓厚兴趣了。不过这个还不算一个入门例子。只是完成了简单的下载和解析。现在我们来完成一个比较...

郭钟
2015/04/18
0
3
GuozhongCrawler配置出错

@郭钟 你好,想跟你请教个问题: 按你的博客配置了一下项目,有个错误不明,麻烦你看一下

Syion
2015/07/01
131
2
C语言自学完备手册(21)——递归

版权声明: https://blog.csdn.net/lfdfhl/article/details/82897146 自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–o...

谷哥的小弟
2018/09/29
0
0
C语言自学完备手册(19)——冒泡排序

版权声明: https://blog.csdn.net/lfdfhl/article/details/82862688 自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–o...

谷哥的小弟
2018/09/27
0
0
PDF转Word的利器——ABBYY FineReader

版权声明: https://blog.csdn.net/lfdfhl/article/details/84960682 自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–o...

谷哥的小弟
2018/12/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

深入理解JVM—JVM内存模型

深入理解JVM—JVM内存模型 我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存...

onedotdot
28分钟前
1
0
MVC、MVCS、MVVM、MVP、VIPER等这么多架构模式哪一个好呢?

在项目开启阶段,其中一个很重要的环节就是选架构。 那么面对目前已知的这么多架构模式我们该怎么选择呢?这确实是个很让人头疼的问题! 下面我就在这里梳理一下目前常见的一些架构模式。 先...

Java干货分享
今天
4
0
简单模仿配置文件的反射机制

//Student类 public class Student { public void love() { System.out.println("python"); } } //Tesy类 public class Tesy { public static void main(String[] args) throws Exceptio......

南桥北木
今天
2
0
你真的需要了解一下CSS变量 var()的用法

当Web项目变得越来越大时,他的CSS会变得像天文数字那么大而且还变得混乱。为了帮助我们解决这个问题,新的CSS变量很快就会出现在主流浏览器中,它让开发人员能够重用并轻松编辑重复出现的C...

前端小攻略
今天
1
0
嵌入式应用选择合适的微控制器

为嵌入式应用选择微控制器有几个原因,即低成本,高集成度,增加可靠性,节省空间等。 准备所需硬件接口列表使用微控制器的基本硬件框图,准备一份微控制器需要支持的所有外设接口的列表。微...

linux-tao
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部