当前位置: 首页 > news >正文

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

转载于:https://www.cnblogs.com/lytwajue/p/7253437.html

相关文章:

  • 如何利用数据挖掘告别单身
  • 为何大数据开发师的工资能这么高
  • BZOJ2242 SDOI2011 计算器
  • 关于反爬虫,看完这篇文章就够了
  • 使用.NET Reflector 查看Unity引擎里面的DLL文件
  • 大数据从业者应该知道的开源工具(全)
  • python--内置函数
  • 什么是大数据挖掘技术
  • C基础 工程中常用的排序
  • 你可能不知道的大数据开发的十个技巧
  • 如何在万亿级别规模的数据量上使用Spark
  • angular指令详解--自定义指令
  • 大数据工程师面试题之互联网公司篇
  • 教你如何成为Spark大数据高手
  • Java基础语法学习4——常量
  • 2017前端实习生面试总结
  • Brief introduction of how to 'Call, Apply and Bind'
  •  D - 粉碎叛乱F - 其他起义
  • Fabric架构演变之路
  • Git同步原始仓库到Fork仓库中
  • JavaScript设计模式系列一:工厂模式
  • JAVA多线程机制解析-volatilesynchronized
  • JS实现简单的MVC模式开发小游戏
  • Python - 闭包Closure
  • SpringBoot几种定时任务的实现方式
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • 爱情 北京女病人
  • 闭包,sync使用细节
  • 将回调地狱按在地上摩擦的Promise
  • 开发基于以太坊智能合约的DApp
  • 区块链分支循环
  • 数据科学 第 3 章 11 字符串处理
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • RDS-Mysql 物理备份恢复到本地数据库上
  • ​520就是要宠粉,你的心头书我买单
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (14)Hive调优——合并小文件
  • (42)STM32——LCD显示屏实验笔记
  • (pojstep1.3.1)1017(构造法模拟)
  • .Net 垃圾回收机制原理(二)
  • .net 使用ajax控件后如何调用前端脚本
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .NET命名规范和开发约定
  • @Autowired 与@Resource的区别
  • @四年级家长,这条香港优才计划+华侨生联考捷径,一定要看!
  • [BUG] Hadoop-3.3.4集群yarn管理页面子队列不显示任务
  • [Bzoj4722]由乃(线段树好题)(倍增处理模数小快速幂)
  • [C#] 基于 yield 语句的迭代器逻辑懒执行
  • [c++] 单例模式 + cyberrt TimingWheel 单例分析
  • [C++]priority_queue的介绍及模拟实现