如何在scrapy python中跟随下一页,但只能跟随到某个页面

izkcnapc  于 2022-11-09  发布在  Python
关注(0)|答案(1)|浏览(138)

因此,我刮一些真实的地产价格,但我只想在某个日期之前的数据,比如说2010年,这意味着我需要遵循下一页只到某一页。我怎么去实现这一点?
我可以得到的网页,我想跟随链接停止,手动,但显然我想避免这种情况。
我们能不能用某种方式利用被抓取的条目数?例如,在这个网站(如下所示)中,我每页只抓取10个条目。假设我只想抓取到第14页的数据(包括第14页,但不包括第15页),那么应该有14 x 10 = 140个条目被抓取。那么我能告诉scrapy在条目数为140时停止吗?

import scrapy

class PropertySpider(scrapy.Spider):
    name = 'property'
    start_urls = ['http://house.speakingsame.com/p.php?q=Fortitude+Valley&p=0&s=1&st=&type=House&count=288&region=Fortitude+Valley&lat=0&lng=0&sta=qld&htype=&agent=0&minprice=0&maxprice=0&minbed=0&maxbed=0&minland=0&maxland=0'
                  ]

    def parse(self, response):

        # my code here

        next_page = response.xpath("/html/body/center/table").xpath(".//tr").xpath(".//td")[-1].css('a').attrib[
            'href']
        if next_page is not None:
            yield response.follow(next_page, callback=self.parse)
oyjwcjzk

oyjwcjzk1#

Scrapy提供了Close蜘蛛扩展。
类scrapy.扩展.关闭蜘蛛.关闭蜘蛛
在满足某些条件时自动关闭蜘蛛,并对每个条件使用特定的关闭原因。
通过启用扩展,您可以访问几个设置,这些设置可以用于在某个时候停止蜘蛛,包括CLOSESPIDER_ITEMCOUNT,它将完全按照您的要求执行。
在您的settings.py文件中

EXTENSIONS = {
    'scrapy.extensions.closespider.CloseSpider': 500  
}

# CLOSESPIDER_TIMEOUT = 0

CLOSESPIDER_ITEMCOUNT = 140 # change value to suite your needs

# CLOSESPIDER_PAGECOUNT = 0

# CLOSESPIDER_ERRORCOUNT = 0

Scrapy CloseSpider文档

相关问题