Scrapy爬虫中间件,使用Scrapinghub的Hub Crawl Frontier作为URL的后端
项目描述
这个Scrapy爬虫中间件使用Scrapinghub的Scrapy Cloud服务的HCF后端来检索要爬取的新URL并将提取的链接存储回。
安装
使用pip安装scrapy-hcf
$ pip install scrapy-hcf
配置
要激活此中间件,需要将其添加到 SPIDER_MIDDLEWARES 字典中,即
SPIDER_MIDDLEWARES = { 'scrapy_hcf.HcfMiddleware': 543, }
以下设置需要定义
- HS_AUTH
Scrapy Cloud API 密钥
- HS_PROJECTID
Scrapy Cloud 项目 ID(如果蜘蛛在 dash 上运行则不需要)
- HS_FRONTIER
Frontier 名称。
- HS_CONSUME_FROM_SLOT
蜘蛛将从中读取新 URL 的槽位。
注意,HS_FRONTIER 和 HS_CONSUME_FROM_SLOT 可以通过蜘蛛的属性 hs_frontier 和 hs_consume_from_slot 在蜘蛛内部进行覆盖。
以下可选的 Scrapy 设置可以定义
- 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 请求 meta 中定义以下键以控制 HCF 中间件的行为
- 'use_hcf'
如果设置为 True,则请求将被存储在 HCF 中。
- 'hcf_params'
要存储在 HCF 中的请求指纹的参数字典
- 'qdata'
与指纹一起存储在请求队列中的数据
- 'fdata'
与指纹一起存储在指纹集中的数据
- 'p'
优先级 - 优先级较低的数字先返回。默认为 0
'qdata' 参数的值可以使用 response.meta['hcf_params']['qdata'] 查询。
蜘蛛可以通过将蜘蛛的 slot_callback 方法设置为具有以下签名的函数来覆盖默认的槽位分配函数
def slot_callback(request): ... return slot
项目详情
scrapy-hcf-1.0.0.tar.gz 的散列
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ef36065bba23571af7a6a3a770c710664a5f86447cedee6b476e2c846c63013f |
|
MD5 | 3cc8d2e1352891fc40b5fa9f3d4b433d |
|
BLAKE2b-256 | 2f7cb39ebb49f0e0dbc04d41b32e5252346c3b2a84b3dfc0cbd2c4c56fc8c701 |
scrapy_hcf-1.0.0-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a5ae573a655a3efe31af7262238a33f294192e0f18a7fa2a5590ed729e29d493 |
|
MD5 | c5722a8e5372dda845b2f66a3b30d53b |
|
BLAKE2b-256 | 6ebb709957580f8bd2e5163094776d650f9ea91dc2450c67b1b7db4003a0b99f |