如何收集统计从内scrapy蜘蛛回调?

vuv7lop3  于 2022-11-09  发布在  其他
关注(0)|答案(5)|浏览(144)

如何从蜘蛛回调中收集统计信息?

示例

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

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

不确定什么import或如何使stats一般可用。

3duebb1j

3duebb1j1#

查看stats page from the scrapy documentation。文档说明了Stats Collector,但可能需要将from scrapy.stats import stats添加到您的spider代码中,以便能够使用它进行操作。
编辑:冒着自吹自擂的风险,如果你是在一个具体的例子之后,我发布了一个关于如何收集失败的URL的答案。
编辑2:经过大量的谷歌搜索,显然没有必要导入。只要使用self.crawler.stats.set_value()

628mspwn

628mspwn2#

与scrapy 0.24 -统计我使用它的方式如下:

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构造函数来执行自己的代码。

vbkedwbf

vbkedwbf3#

将其添加到spider类中

def my_parse(self, response): 
    print self.crawler.stats.get_stats()
dgiusagp

dgiusagp4#

如果要在其他用户中使用,可以:
抓取器.抓取器.统计数据.get_stats()

iugsix8n

iugsix8n5#

如果你想在作为python对象爬行后得到零碎的统计数据。这可能会有帮助-

def spider_results(spider):
    results = []
    stats = []

    def crawler_results(signal, sender, item, response, spider):
        results.append(item)

    def crawler_stats(*args,**kwargs):
        stats.append(kwargs['sender'].stats.get_stats())

    dispatcher.connect(crawler_results, signal=signals.item_scraped)

    dispatcher.connect(crawler_stats, signal=signals.spider_closed)

    process = CrawlerProcess()
    process.crawl(spider) # put our own spider class here
    process.start()  # the script will block here until the crawling is finished
    return results, stats

希望能有所帮助!

相关问题