我正在编写一个spider,它使用scrapy框架(我正在使用crawlspider对域中的每个链接进行爬网)从给定的域中提取某些文件。我想阻止蜘蛛找不到文件的某些网址。例如,如果sider访问了一个包含/news/path的URL一百次,但没有找到一个文件,我希望它停止在/news/
我已经尝试更新自我规则变量时,它发现和路径,不产生文件,但这没有工作,它继续爬网与该路径的网址
这是我试图用来更新规则的函数
def add_block_rule(self, match):
new_rule = match.replace('/','\/')
new_rule = f'/(.*{new_rule}.*)'
if new_rule in self.deny_rules:
return
print(f'visted {match} to many times with out finding a file')
self.deny_rules.append(new_rule)
self.rules = (
Rule(
LinkExtractor(
allow_domains=self.allowed_domains,
unique=True,
deny=self.deny_rules,),
callback='parse_page',
follow=True),
)
print(self.deny_rules)
我知道这个函数被调用时,某些路径被访问了一百次而没有找到一个文件,但是新规则没有被使用。我还知道正则表达式的工作原理是我在init中定义了一个正则表达式,它阻塞了所需的路径。你知道吗
我希望所有被访问超过100次而没有找到文件的路径都会被阻止,不再被访问
目前没有回答
相关问题 更多 >
编程相关推荐