首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scrapy如何避免分页黑洞?

Scrapy如何避免分页黑洞?
EN

Stack Overflow用户
提问于 2016-08-19 05:18:52
回答 1查看 575关注 0票数 0

我最近在一个网站蜘蛛上工作,注意到它请求的页面数量是无限的,因为一个网站并没有将其分页编码为永远停止。

因此,虽然它们只有几页内容,但它仍然会生成下一个链接和url ...?page=400、...?page=401等。

内容没有改变,只改变了URL。有没有办法让Scrapy在内容停止更改时停止分页?或者是一些我可以定制的代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-19 16:16:19

如果内容没有变化,您可以将当前页面的内容与上一页面的内容进行比较,如果相同,则中断爬网。

例如:

代码语言:javascript
复制
def parse(self, response):
    product_urls = response.xpath("//a/@href").extract()
    # check last page
    if response.meta.get('prev_urls') == product_urls:
        logging.info('reached the last page at: {}'.format(response.url))
        return  # reached the last page
    # crawl products
    for url in product_urls:
        yield Request(url, self.parse_product)
    # create next page url
    next_page = response.meta.get('page', 0) + 1
    next_url = re.sub('page=\d+', 'page={}'.format(next_page), response.url)
    # now for the next page carry some data in meta
    yield Request(next_url, 
                  meta={'prev_urls': product_urls,
                        'page': next_page}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39027680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档