抓取页面和抓取的总MB限制

时间:2019-08-18 10:53:26

标签: python scrapy web-crawler scrapy-settings

我想根据抓取的页面数和已下载的总MB来限制广泛的抓取工具。

我认为有两种设置CLOSESPIDER_PAGECOUNT和CLOSESPIDER_ITEMCOUNT可以有效地限制抓取的页面数。我希望这两个行为相同,因为我每页有1个项目。这些都不能正常工作。有趣的是,将它们各自限制为10,在一种情况下为我提供25页,在另一种情况下为34页。代码如下。

class mySpider(scrapy.spiders.CrawlSpider):
    name = 'mySpider'
    rules = [
        Rule(
            LinkExtractor(
                canonicalize=True,
                unique=True,
            ),
            follow=True,
            callback="parse_items",
            process_links='filter_links'
        )
    ]

    def __init__(self, start_urls, allowed_domains):
        self.start_urls = start_urls
        self.allowed_domains = allowed_domains

    def parse_items(self, response):
        self.save_page_contents(response)
        items = self.prepare_items(response)
        yield items 

    def filter_links(self, links):
        for link in links:
            if any(domain in link.url for domain in self.allowed_domains):
                yield link

我通过使用CrawlerProcess指定上述设置来运行搜寻器。

我认为问题出在我过滤链接的方式上。我知道我只是在使用允许的链接进行过滤,但没有此filter_links函数,搜寻器就不会停留在给定的域内。我也没有想出一种方法来阻止爬网达到给定的限制。

链接的重复项仅解决问题的page_count部分。大小限制问题尚未解答。

0 个答案:

没有答案