关于scrapy:33Scrapy数据收集Stats-Collection

【百度云搜寻,搜各种材料:http://www.lqkweb.com】
【搜网盘,搜各种材料:http://www.swpan.cn】

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 scrapy
from scrapy.http import Request,FormRequest


class 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…

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理