Scrapy中间件,允许Scrapy爬虫过滤请求。
项目描述
Scrapy-link-filter
允许Scrapy爬虫过滤请求的爬虫中间件。CrawlSpider已经使用规则和RobotsTxtMiddleware提供了类似功能,但这里有所不同。此中间件允许动态地按请求定义规则,或作为爬虫参数而不是项目设置。
安装
此项目需要Python 3.6+和pip。强烈建议使用虚拟环境。
$ pip install git+https://github.com/croqaz/scrapy-link-filter
使用
要将中间件作为爬虫中间件启用,必须在项目的settings.py
中添加。
SPIDER_MIDDLEWARES = {
# maybe other Spider Middlewares ...
# can go after DepthMiddleware: 900
'scrapy_link_filter.middleware.LinkFilterMiddleware': 950,
}
或者,它可以在项目的settings.py
中作为下载器中间件启用
DOWNLOADER_MIDDLEWARES = {
# maybe other Downloader Middlewares ...
# can go before RobotsTxtMiddleware: 100
'scrapy_link_filter.middleware.LinkFilterMiddleware': 50,
}
规则必须在爬虫实例中、在spider.extract_rules
字典中或按请求在request.meta['extract_rules']
中定义。内部,extract_rules字典被转换为LinkExtractor,用于匹配请求。
注意 默认情况下,URL匹配是区分大小写的,这在大多数情况下都适用。为了启用不区分大小写的匹配,您可以在每个需要不区分大小写的“允许”或“拒绝”规则的开头指定一个“(?i)”内联标志。
在爬虫实例上的特定允许过滤器示例
from scrapy.spiders import Spider
class MySpider(Spider):
extract_rules = {"allow_domains": "example.com", "allow": "/en/items/"}
或在请求元数据中的特定拒绝过滤器
request.meta['extract_rules'] = {
"deny_domains": ["whatever.com", "ignore.me"],
"deny": ["/privacy-policy/?$", "/about-?(us)?$"]
}
可能的字段有
allow_domains
和deny_domains
- 一个或多个特定限制或拒绝的域名allow
和deny
- 一个或多个子字符串或模式,用于特定允许或拒绝
所有字段都可以定义为字符串、列表、集合或元组。
许可证
BSD3 © Cristi Constantin.
项目详情
关闭
scrapy-link-filter-0.2.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 64bf701cbbbc9f51dad47094c1effbf9ca47b6d6e9f54c0f64cedefcbbbc72e4 |
|
MD5 | c46a8775512a159c7e5898e48c779229 |
|
BLAKE2b-256 | 3d1c175ecef969380c969abbd90f1063b8375fe68131f8a2c0c5995beb0b0a84 |
关闭
scrapy_link_filter-0.2.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f1f6c25569a765945a331daac3929731cd1f4e07ad129705ee53d0b6e65f9d36 |
|
MD5 | d8319c5b016dd2c6f0a4f3e81e233b9a |
|
BLAKE2b-256 | a8d549b7e0fcd23809a513a59d9224812355d2b8424b672b3963e7d8155e4ba9 |