Scrapy中间件,允许只爬取新内容
项目描述
scrapy-crawl-once
此软件包提供了一个Scrapy中间件,允许避免重新爬取先前爬取中已下载的页面。
许可证为MIT。
安装
pip install scrapy-crawl-once
使用
要启用它,修改您的settings.py
SPIDER_MIDDLEWARES = { # ... 'scrapy_crawl_once.CrawlOnceMiddleware': 100, # ... } DOWNLOADER_MIDDLEWARES = { # ... 'scrapy_crawl_once.CrawlOnceMiddleware': 50, # ... }
默认情况下,它什么都不做。要避免爬取特定页面多次,请设置request.meta['crawl_once'] = True。当收到响应且回调成功时,此类请求的指纹将存储到数据库中。当蜘蛛安排新的请求时,中间件首先检查其指纹是否在数据库中,如果存在,则丢弃该请求。
其他request.meta键
crawl_once_value - 要存储在数据库中的值。默认情况下,存储时间戳。
crawl_once_key - 请求唯一ID;默认使用request_fingerprint。
设置
CRAWL_ONCE_ENABLED - 将其设置为False以禁用中间件。默认为True。
CRAWL_ONCE_PATH - 存储已爬取请求数据库的文件夹路径。默认情况下,使用项目目录下的 .scrapy/crawl_once/ 路径;此文件夹包含 <spider_name>.sqlite 文件,其中包含已看到的请求数据库。
CRAWL_ONCE_DEFAULT - crawl_once 元数据键的默认值(默认为 False)。当为 True 时,除非显式禁用(使用 request.meta['crawl_once'] = False),否则所有请求都由该中间件处理。
替代方案
https://github.com/scrapy-plugins/scrapy-deltafetch 是一个类似的包;它几乎做同样的事情。差异
scrapy-deltafetch 根据生成的项目选择是否丢弃请求;scrapy-crawl-once 使用显式的 request.meta['crawl_once'] 标志。
scrapy-deltafetch 使用 bsddb3,而 scrapy-crawl-once 使用 sqlite。
另一种替代方案是内置的 Scrapy HTTP 缓存。差异
scrapy 缓存将所有页面存储在磁盘上,而 scrapy-crawl-once 只保留请求指纹;
scrapy 缓存允许更细粒度的失效,与浏览器的操作方式一致;
使用 scrapy 缓存时,所有页面仍然会被处理(尽管不是所有页面都会被下载)。
贡献
要运行测试,请安装 tox 并从源代码签出运行 tox。
变更记录
0.1.1 (2017-03-04)
scrapy 统计中的新 'crawl_once/initial' 值 - 它包含 crawl_once 数据库的初始大小(记录数)。
0.1 (2017-03-03)
初始发布。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
构建分发
scrapy-crawl-once-0.1.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8ab832ab5c4073ba2aa498a8c6bb2a792117ecd7deadca41d7fd1cdee534caf4 |
|
MD5 | d3a838f8f0f01ab8555cc54e4d060d09 |
|
BLAKE2b-256 | fce3e196d13482add6f506976e92fca549f3bfdeb5a015a5dc5146cfacd30d32 |
scrapy_crawl_once-0.1.1-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 60ea4e7529f99ad1ec6cacbad53828fbfa5959cc4dddfe8047557e7c189e920c |
|
MD5 | 7cbd808e48d307faf08a88e23e87d7b3 |
|
BLAKE2b-256 | 49978684f7a85d6be3a52f50cce2411eaaaf6c4e0d6c1598fa7b4e99578ba2cb |