文档章节

GuozhongCrawler系列教程 (2) CrawTaskBuilder详解

郭钟
 郭钟
发布于 2015/06/08 17:35
字数 1410
阅读 43
收藏 0
点赞 0
评论 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
北京
架构师
MongoDB系列教程(八):GridFS存储详解

MongoDB系列教程(八):GridFS存储详解 GridFS简介 mongoDB的文档以BSON格式存储,支持二进制的数据类型,当我们把二进制格式的数据直接保存到mongoDB的文档中。但是当文件太大时,例如图片...

开元中国2015 ⋅ 2015/07/25 ⋅ 0

Android 开发程序员必备网站

开发必备网站: Android 开发各种工具下载 Android 开发国内大牛集合 Android 开发技术博客周刊 Android 开发技术周报中文版 Android 优秀开源项目集合以及源码分析 Android 万能的技术交流社...

api接口设计 ⋅ 2016/11/08 ⋅ 0

Android 开发程序员必备网站

开发必备网站: Android 开发各种工具下载 Android 开发国内大牛集合 Android 开发技术博客周刊 Android 开发技术周报中文版 Android 优秀开源项目集合以及源码分析 Android 万能的技术交流社...

白jian ⋅ 2016/11/25 ⋅ 1

“我爱智能”原创性博客索引

不知不觉,博客也写出了一点小体系,新的阶段已经开始,未来希望再接再厉继续补充这一体系,在成长中写博客,在博客中成长,在此先做一个小的梳理,谢谢大家的支持。 一)关于深度学习系列 ...

on2way ⋅ 2015/08/29 ⋅ 0

Android Studio系列教程

Android Studio系列教程一 —- 下载与安装 Android Studio系列教程二 —- 基本设置与运行 Android Studio系列教程三 —- 快捷键 Android Studio系列教程四 —- Gradle基础 Android Studio系列...

青莲居士 ⋅ 2015/10/09 ⋅ 0

MongoDB 常用命令总结

MongoDB 常用命令总结 简单的的增删改查数据 在查询结果中指定显示或者不显示某个字段 例如,我们希望在 lessons 集合中查找所有数据,但是不希望在返回结果中包含 slides 字段;因为 slides...

开元中国2015 ⋅ 2015/06/30 ⋅ 0

移动开发之微信小程序——资料集合

本文转载自:知乎 有需要下载的客官可可以点击知乎去下载相关资料 一:官方地址集合: 1:官方工具:https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html?t=1476434678461 2:...

DJY1992 ⋅ 2016/12/21 ⋅ 0

【备忘】2017最新妙味课堂VIP视频教程全套 无加密

下载地址 http://www.ai998.cn/thread-1107-1-1.html 【备忘】2017最新妙味课堂VIP视频教程全套 无加密 课程大纲 01:PhotoShop基础 02:代码入门篇 03:HTML5基础 04:HTML5高级 05:HTML+...

qq_38155396 ⋅ 2017/08/30 ⋅ 0

Android RxJava 实际应用讲解:从磁盘 / 内存缓存中 获取缓存数据

前言 ,由于其基于事件流的链式调用、逻辑简洁 & 使用简单的特点,深受各大 开发者的欢迎。 Github截图 如果还不了解RxJava,请看文章:Android:这是一篇 清晰 & 易懂的Rxjava 入门教程 如此...

Carson_Ho ⋅ 2017/11/06 ⋅ 0

《PHP框架Yii学习》系列技术文章整理收藏

《PHP框架Yii学习》系列技术文章整理收藏 1Yii Framework框架获取分类下面的所有子类方法 2YII模块实现绑定二级域名的方法 3Yii框架官方指南系列43——专题:URL(创建、路由、美化及自定义)...

开元中国2015 ⋅ 2015/05/30 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

容器之重命名镜像

使用docker tag命令来重命名镜像名称,先执行help,查看如何使用如下 mjduan@mjduandeMacBook-Pro:~/Docker % docker tag --helpUsage:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TA...

汉斯-冯-拉特 ⋅ 18分钟前 ⋅ 0

with 的高级用法

那么 上下文管理器 又是什么呢? 上下文管理器协议包含 __enter__ 和 __exit__ 两个方法。with 语句开始运行时,会在上下文管理器对象上调用 __enter__ 方法。with 语句运行结束后,会在上下...

阿豪boy ⋅ 37分钟前 ⋅ 0

使用 jsoup 模拟登录 urp 教务系统

需要的 jsoup 相关 jar包:https://www.lanzous.com/i1abckj 1、首先打开教务系统的登录页面,F12 开启浏览器调试,注意一下 Request Headers 一栏的 Cookie 选项,我们一会需要拿这个 Cook...

大灰狼时间 ⋅ 37分钟前 ⋅ 0

关于线程的创建

转自自己的笔记: http://note.youdao.com/noteshare?id=87584d4874acdeaf4aa027bdc9cb7324&sub=B49E8956E145476191C3FD1E4AB40DFA 1.创建线程的方法 Java使用Thread类代表线程,所有的线程对......

MarinJ_Shao ⋅ 48分钟前 ⋅ 0

工厂模式学习

1. 参考资料 工厂模式-伯乐在线 三种工厂-思否 深入理解工厂模式 2. 知识点理解 2.1 java三种工厂 简单工厂 工厂模式 抽象工厂 2.2 异同点 逐级复杂 简单工厂通过构造时传入的标识来生产产品...

liuyan_lc ⋅ 今天 ⋅ 0

Java NIO

1.目录 Java IO的历史 Java NIO之Channel Java NIO之Buffer Java NIO之Selector Java NIO之文件处理 Java NIO之Charset Java 可扩展IO 2.简介 “IO的历史”讲述了Java IO API从开始到现在的发...

士别三日 ⋅ 今天 ⋅ 0

[Err] ORA-24344: success with compilation error

从txt文本复制出创建function的脚本,直接执行,然后报错:[Err] ORA-24344: success with compilation error。 突然发现脚本的关键字,居然不是高亮显示。 然后我把脚本前面的空格去掉,执行...

wenzhizhon ⋅ 今天 ⋅ 0

Spring Security授权过程

前言 本文是接上一章Spring Security认证过程进一步分析Spring Security用户名密码登录授权是如何实现得; 类图 调试过程 使用debug方式启动https://github.com/longfeizheng/logback该项目,...

hutaishi ⋅ 今天 ⋅ 0

HAProxy基于KeepAlived实现Web高可用及动静分离

前言 软件负载均衡一般通过两种方式来实现: 基于操作系统的软负载实现 基于第三方应用的软负载实现 LVS是基于Linux操作系统实现的一种软负载,而HAProxy则是基于第三方应用实现的软负载。 ...

寰宇01 ⋅ 今天 ⋅ 0

微软自研处理器的小动作:已经开始移植其他平台的工具链

微软将 Windows 10 、Linux 以及工具链如 C/C++ 和 .NET Core 运行时库、Visual C++ 2017 命令行工具、RyuJIT 编辑器等移植到其自主研发的处理器架构 E2。微软还移植了广泛使用的 LLVM C/C++...

linux-tao ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部