Scrapy:如何限制SitemapSpider中截取的网址数量

时间:2017-11-05 21:44:43

标签: python scrapy

我正在开发一个站点地图蜘蛛。这个蜘蛛获取一个站点地图网址并抓取此站点地图中的所有网址。我想将网址数限制为100.

我无法使用CLOSESPIDER_PAGECOUNT因为我使用XML导出管道。 似乎当scrapy进入pagecount时,它会停止包括XML生成在内的所有内容。所以XML文件没有关闭等等。它是无效的。

class MainSpider(SitemapSpider):
    name = 'main_spider'
    allowed_domains = ['doman.com']
    sitemap_urls = ['http://doman.com/sitemap.xml']

    def start_requests(self):
        for url in self.sitemap_urls:
            yield Request(url, self._parse_sitemap)


    def parse(self, response):
        print u'URL: {}'.format(response.url)
        if self._is_product(response):
            URL = response.url
            ITEM_ID = self._extract_code(response)

    ...

你知道该怎么办吗?

2 个答案:

答案 0 :(得分:0)

使用返回对我来说还不够,但是您可以将其与 CloseSpider 例外相结合:

# To import it :
from scrapy.exceptions import CloseSpider


#Later to use it:
raise CloseSpider('message')

I posted the whole code combining both on stackoverflow here

答案 1 :(得分:-1)

为什么蜘蛛初始化为0时没有count属性,而parse方法可以

def parse(self, response):
    if self.count >= 100:
         return
    self.count += 1
    # do actual parsing here