scrapy spider中间件使用scrapinghub的集线器爬行边界作为url的后端
scrapy-hcf的Python项目详细描述
这个scrapy spider中间件使用来自scrapinghub的hcf后端 scrapy云服务检索要爬网的新url 并存储提取的链接。
安装
使用pip:
$ pip install scrapy-hcf
配置
要激活这个中间件,需要将它添加到SPIDER_MIDDLEWARES dict,即:
SPIDER_MIDDLEWARES = { 'scrapy_hcf.HcfMiddleware': 543, }
需要定义以下设置:
- HS_AUTH
- Scrapy Cloud API密钥
- HS_PROJECTID
- scrapy cloud项目id(如果spider在dash上运行,则不需要)
- HS_FRONTIER
- 边界名称。
- HS_CONSUME_FROM_SLOT
- 蜘蛛将从中读取新URL的槽。
注意HS_FRONTIER和HS_CONSUME_FROM_SLOT可以被重写 从蜘蛛内部使用蜘蛛属性hs_frontier 分别是hs_consume_from_slot。
可以定义以下可选的刮擦设置:
- HS_ENDPOINT 指向api端点的url,即:http://localhost:8003。 默认值由python hubstorage包提供。
- HS_MAX_LINKS
- 要从HCF读取的链接数,默认为1000。
- HS_START_JOB_ENABLED
- 启用蜘蛛完成时是否启动新作业。 默认值是False
- HS_START_JOB_ON_REASON
- 这是结案原因列表, 如果蜘蛛以这些原因中的任何一个结束,新的工作将开始 对于同一个插槽。默认值是['finished']
- HS_NUMBER_OF_SLOTS
- 这是中间件用于存储新链接的插槽数。 默认值为8。
用法
为了控制行为,可以在scrapy请求元中定义以下键 关于HCF中间件:
- 'use_hcf'
- 如果设置为True,则请求将存储在HCF中。
- 'hcf_params'
要与请求指纹一起存储在HCF中的参数字典
- 'qdata'
- 要与指纹一起存储在请求队列中的数据
- 'fdata'
- 要与指纹集中的指纹一起存储的数据
- 'p'
- 优先级-首先返回较低优先级的数字。默认值为0
'qdata'参数的值稍后可以使用 response.meta['hcf_params']['qdata']。
通过设置 spiderslot_callback方法指向具有以下签名的函数:
def slot_callback(request): ... return slot