scrapy的sitemapcrawler在抓取之前处理链接

时间:2017-06-16 07:02:05

标签: scrapy

是否可以将规则与sitemapcrawler一起使用?有些网站的旧站点地图使用http链接而不是https。每次我抓取它们时,所有链接都被重定向(301),这将在他们(和我的)方面创建无用的流量。我认为最简单的解决方案是在链接被抓取之前处理链接并将方案从http更改为https。

我可以使用规则执行此操作,还是应该使用默认的中间件,只是让它解析所有网址两次?忽略重定向可能是一个解决方案,但我发现它“更脏”。

2 个答案:

答案 0 :(得分:0)

Scrapy sitemapcrawler具有规则属性。

请参阅: https://doc.scrapy.org/en/latest/topics/spiders.html#scrapy.spiders.SitemapSpider.sitemap_rules

您可以添加regexp,它将过滤非https网址。

答案 1 :(得分:0)

您可以尝试覆盖SitemapSpider的_parse_sitemap,在SitemapSpider中检查它的实现,例如:

def _parse_sitemap(self, response):
    sitemap_generator = super(MySitemapSpider, self)._parse_sitemap(response)
    if sitemap_generator is None:
        return

    for response_url in sitemap_generator:
        import pdb;pdb.set_trace()
        # do something with the URL
        yield response_url