210306更新
吐了,之前那个虽然有效,但是换了一个爬虫就不行了。目前发现,只要在当前代码中调用self.crawler.stats
就行了。
class BaiduSpider(scrapy.Spider):
name = "baidu"
allowed_domains = ['www.baidu.com']
start_urls = []
def parse(self, response):
self.crawler.stats.set_value('自定义value键', '你的value值')
pass
参考文章:https://blog.csdn.net/weixin_43689344/article/details/96477476
废弃方案
问这个问题的同学一般都跑过几个爬虫了,所以直接进入到一个spider中。
class BaiduSpider(scrapy.Spider):
name = "baidu"
allowed_domains = ['www.baidu.com']
start_urls = []
def parse(self, response):
pass
先加入如下横线内的代码,调用一下stats,不用导入其他的包。
class BaiduSpider(scrapy.Spider):
name = "baidu"
allowed_domains = ['www.baidu.com']
start_urls = []
----------------------------------------------------
def __init__(self, stats):
self.stats = stats
@classmethod
def from_crawler(cls, crawler):
return cls(crawler.stats)
----------------------------------------------------
def parse(self, response):
pass
然后如果想进行添加一个统计信息在最后的输出中,可以加入如下代码。
class BaiduSpider(scrapy.Spider):
name = "baidu"
allowed_domains = ['www.baidu.com']
start_urls = []
def __init__(self, stats):
self.stats = stats
@classmethod
def from_crawler(cls, crawler):
return cls(crawler.stats)
def parse(self, response):
----------------------------------------------------
self.stats.set_value('spider_name', self.name)
----------------------------------------------------
如果你想统计某些内容,例如:一个特定的item的爬取数量,或者某个特定的url的爬取数量等,使用如下代码即可。
直接放到你要递增的地方,它会自动初始化为1,然后没遇到以此进行以此递增。
def parse(self, response):
----------------------------------------------------
stats.inc_value('custom_count')
----------------------------------------------------
更多的用法,你现在就可以看一下官方文档了https://docs.scrapy.org/en/latest/topics/stats.html。