我有一个抓取网址的抓取工具,然后跟踪起始网址及其工作中每个网址的下一页链接
rules = (Rule(LinkExtractor(allow=(), restrict_xpaths=('//a[@class="pagnNext"]',)), callback="parse_start_url", follow= True),)
然而,你可以想象我开始在某些时候获得一些网址的验证码。我听说可能有人类不可见的蜜罐,但在html代码中,你会点击以确认你是一个机器人。
我想让提取器有条件地提取链接,例如不提取并单击如果CSS样式显示:none存在或类似的东西
这是可行的
答案 0 :(得分:0)
我会做这样的事情:
def parse_page1(self, response):
if (response.css("thing i want to check exists"))
return scrapy.Request(response.xpath('//a[@class="pagnNext"]'),
callback=self.parse_page2)
def parse_page2(self, response):
# this would log http://www.example.com/some_page.html
self.logger.info("Visited %s", response.url)
官方文件: https://doc.scrapy.org/en/latest/topics/request-response.html
注意:至于您的验证码问题,请尝试弄乱您的设置。至少要确保你的DOWNLOAD_DELAY设置为0以外的其他值。查看其他选项https://doc.scrapy.org/en/latest/topics/settings.html