Scrapy:停止爬行一个域,如果条件满足
问题描述:
跳到下一个我喜欢写BFO宽履带,其执行以下操作:Scrapy:停止爬行一个域,如果条件满足
- 开始第一URL
- 试图找到链接到Impressum
RegEx: '.*mpressum.*'
(翻译:印记) - 检查是否符合某些条件。在我的情况下,如果邮政编码在一定范围内
- 如果满足条件继续爬行页面
- 如果不符合条件,请停止对该域进行爬网以将其从未来爬网列入黑名单。
- 与未来域继续
我怎样才能实现Scrapy这种行为?
基本上我这样做是因为我想回答以下问题:
德国的哪些域名在某个邮政编码范围内?
我的代码很混乱,因为我现在正在学习Scrapy。
答
您可以在刮刀中使用allowed_domains
变量。当条件满足时,您只需从allowed_domains
中删除该域。这不会取消已经排队的下载,我相信但不会让你排队新的。
答
首先建立在你的蜘蛛变量blocked_domains
。
然后开始填充blocked_domains
与您不想在抓取过程中抓取的域。
创建一个download middleware。
和内部
def process_request(self, request, spider):
domain = request.url # extract domain of url from request.url
if domain in spider.blocked_domains:
return None # do not process request.
else:
return request # process request
我固定格式错误和扩展的问题。 – zx485
即使你的代码是一团糟 - 通过编辑分享给我们的问题将是有益的。 – zx485