如何从scrapy蜘蛛回调中收集统计数据?

时间:2014-04-09 01:54:19

标签: python scrapy scrapy-spider

如何从蜘蛛回调中收集统计数据?

示例

class MySpider(Spider):
     name = "myspider"
     start_urls = ["http://example.com"]

def parse(self, response):
    stats.set_value('foo', 'bar')

一般情况下,不确定import或如何使stats可用。

4 个答案:

答案 0 :(得分:10)

查看stats page from the scrapy documentation。文档说明了统计信息收集器,但可能需要将from scrapy.stats import stats添加到您的蜘蛛代码中才能使用它。

编辑:冒着吹我自己的小号的风险,如果你在一个具体的例子之后我发布了answer about how to collect failed urls

EDIT2:经过大量的谷歌搜索,显然不需要进口。只需使用self.crawler.stats.set_value()

答案 1 :(得分:2)

使用scrapy 0.24 - stats我按照以下方式使用它:

class TopSearchesSpider(CrawlSpider):
    name = "topSearches"
    allowed_domains = ["...domain..."]

    start_urls = (
        'http://...domain...',
    )

    def __init__(self, stats):
        super(TopSearchesSpider, self).__init__()
        self.stats = stats

    @classmethod
    def from_crawler(cls, crawler):
        return cls(crawler.stats)

    def parse_start_url(self, response):
        sel = Selector(response);
        url = response.url;

        self.stats.inc_value('pages_crawled')
        ...

super 方法是调用CrawlSpider构造函数来执行自己的代码。

答案 2 :(得分:1)

在你的蜘蛛类中添加它

<form:form method="POST" modelAttribute="customerForm" action="/newcustomer" class="form-horizontal well">

答案 3 :(得分:0)

如果要在其他地方使用,可以:

  

spider.crawler.stats.get_stats()