LinkExtractor - 提取条件

时间:2017-03-03 23:45:50

标签: python css xpath scrapy captcha

我有一个抓取网址的抓取工具,然后跟踪起始网址及其工作中每个网址的下一页链接

rules = (Rule(LinkExtractor(allow=(), restrict_xpaths=('//a[@class="pagnNext"]',)), callback="parse_start_url", follow= True),)

然而,你可以想象我开始在某些时候获得一些网址的验证码。我听说可能有人类不可见的蜜罐,但在html代码中,你会点击以确认你是一个机器人。

我想让提取器有条件地提取链接,例如不提取并单击如果CSS样式显示:none存在或类似的东西

这是可行的

1 个答案:

答案 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