博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
三十三 Python分布式爬虫打造搜索引擎Scrapy精讲—数据收集(Stats Collection)
阅读量:4968 次
发布时间:2019-06-12

本文共 1983 字,大约阅读时间需要 6 分钟。

 

Scrapy提供了方便的收集数据的机制。数据以key/value方式存储,值大多是计数值。 该机制叫做数据收集器(Stats Collector),可以通过 Crawler API 的属性 stats 来使用

无论数据收集(stats collection)开启或者关闭,数据收集器永远都是可用的。 因此您可以import进自己的模块并使用其API(增加值或者设置新的状态键(stat keys))。 该做法是为了简化数据收集的方法: 您不应该使用超过一行代码来收集您的spider,Scrpay扩展或任何您使用数据收集器代码里头的状态。

数据收集器的另一个特性是(在启用状态下)很高效,(在关闭情况下)非常高效(几乎察觉不到)。

数据收集器对每个spider保持一个状态表。当spider启动时,该表自动打开,当spider关闭时,自动关闭。

数据收集各种函数

stats.set_value('数据名称', 数据值)设置数据

stats.inc_value('数据名称')增加数据值,自增1
stats.max_value('数据名称', value)当新的值比原来的值大时设置数据
stats.min_value('数据名称', value)当新的值比原来的值小时设置数据
stats.get_value('数据名称')获取数据值
stats.get_stats()获取所有数据

举例:

# -*- coding: utf-8 -*-import scrapyfrom scrapy.http import Request,FormRequestclass PachSpider(scrapy.Spider):                            #定义爬虫类,必须继承scrapy.Spider    name = 'pach'                                           #设置爬虫名称    allowed_domains = ['www.dict.cn']                       #爬取域名    def start_requests(self):    #起始url函数,会替换start_urls        return [Request(            url='http://www.dict.cn/9999998888',            callback=self.parse        )]    # 利用数据收集器,收集所有404的url以及,404页面数量    handle_httpstatus_list = [404]                                  # 设置不过滤404    def __init__(self):        self.fail_urls = []                                         # 创建一个变量来储存404URL    def parse(self, response):                                      # 回调函数        if response.status == 404:                                  # 判断返回状态码如果是404            self.fail_urls.append(response.url)                     # 将URL追加到列表            self.crawler.stats.inc_value('failed_url')              # 设置一个数据收集,值为自增,每执行一次自增1            print(self.fail_urls)                                   # 打印404URL列表            print(self.crawler.stats.get_value('failed_url'))       # 打印数据收集值        else:            title = response.css('title::text').extract()            print(title)

 更多:http://scrapy-chs.readthedocs.io/zh_CN/latest/topics/stats.html

转载于:https://www.cnblogs.com/meng-wei-zhi/p/8182798.html

你可能感兴趣的文章
委托的调用
查看>>
c#中从string数组转换到int数组
查看>>
数据模型(LP32 ILP32 LP64 LLP64 ILP64 )
查看>>
java小技巧
查看>>
POJ 3204 Ikki's Story I - Road Reconstruction
查看>>
【BZOJ】2959: 长跑(lct+缩点)(暂时弃坑)
查看>>
iOS 加载图片选择imageNamed 方法还是 imageWithContentsOfFile?
查看>>
toad for oracle中文显示乱码
查看>>
SQL中Group By的使用
查看>>
错误org/aopalliance/intercept/MethodInterceptor解决方法
查看>>
两个表格中数据不用是一一对应关系--来筛选不同数据,或者相同数据
查看>>
客户数据库出现大量cache buffer chains latch
查看>>
機械の総合病院 [MISSION LEVEL: C]
查看>>
实战练习细节(分行/拼接字符串/字符串转int/weak和copy)
查看>>
Strict Standards: Only variables should be passed by reference
查看>>
hiho_offer收割18_题解报告_差第四题
查看>>
AngularJs表单验证
查看>>
静态方法是否属于线程安全
查看>>
02号团队-团队任务3:每日立会(2018-12-05)
查看>>
SQLite移植手记1
查看>>