Scrapy 提供了 log 功能。可以通过 scrapy.log 模块使用。当前底层实现使用了 Twisted logging,不过可能在之后会有所变化。

log 服务必须通过显式调用 scrapy.log.start() 来开启,以捕捉顶层的 Scrapy 日志消息。再次之上,每个 crawler 都拥有独立的 log 观察者(observer)(创建时自动连接(attach)),接收其 spider 的日志消息。

Log Level

Scrapy 提供 5 层 logging 级别:

  • CRITICAL - 严重错误(critical)
  • ERROR - 一般错误(regular errors)
  • WARNING - 警告信息(warning messages)
  • INFO - 一般信息(informational messages)
  • DEBUG - 调试信息(debugging messages)

如何设置 log 级别

您可以通过终端选项(command line option) –loglevel/-L 或 LOG_LEVEL 来设置 log 级别。

如何记录信息(log message)

下面给出如何使用 WARNING 级别来记录信息的例子:

from scrapy import log
log.msg("This is a warning", level=log.WARNING)

在 Spider 中添加 log(Logging from Spiders)

在 spider 中添加 log 的推荐方式是使用 Spider 的 log() 方法。该方法会自动在调用 scapy.log.msg() 时赋值 spider 参数。其他的参数则直接传递给 msg() 方法。

scrapy.log 模块

scrapy.log.start(logfile=None, loglevel=None, logstdout=None)

启动 Scrapy 顶层 logger。该方法必须在记录任何顶层消息前被调用(使用模块的 msg() 而不是 Spider.log 的消息)。

否则,之前的消息将会丢失。

参数:

  • logfile (str) – 用于保存 log 输出的文件路径。如果被忽略,LOG_FILE 设置会被使用。如果两个参数都是 None,log 将会被输出到标准错误流(standard error)。
  • loglevel – 记录的最低的 log 级别。可用的值有: CRITICAL,ERROR,WARNING,INFO and DEBUG。
  • logstdout (boolean) – 如果为 True,所有您的应用的标准输出(包括错误)将会被记录(logged instead)。 例如,如果您调用 “print ‘hello’”,则’hello’会在 Scrapy 的 log 中被显示。 如果被忽略,则 LOG_STDOUT 设置会被使用。

scrapy.log.msg(message, level=INFO, spider=None)

记录信息(Log a message)。

参数:

  • message (str) – log 的信息
  • level – 该信息的 log 级别. 参考 Log levels.
  • spider (Spider 对象) – 记录该信息的 spider. 当记录的信息和特定的 spider 有关联时,该参数必须被使用。

scrapy.log.CRITICAL

严重错误的 Log 级别

scrapy.log.ERROR

错误的 Log 级别 Log level for errors

scrapy.log.WARNING

警告的 Log 级别 Log level for warnings

scrapy.log.INFO

记录信息的 Log 级别(生产部署时推荐的 Log 级别)

scrapy.log.DEBUG

调试信息的 Log 级别(开发时推荐的 Log 级别)

Logging 设置

以下设置可以被用来配置 logging:

  • LOG_ENABLED
  • LOG_ENCODING
  • LOG_FILE
  • LOG_LEVEL
  • LOG_STDOUT

爬虫:Scrapy11 - Logging的更多相关文章

  1. Python网络爬虫_Scrapy框架_2.logging模块的使用

    logging模块提供日志服务 在scrapy框架中已经对其进行一些操作所以使用更为简单 在Scrapy框架中使用: 1.在setting.py文件中设置LOG_LEVEL(设置日志等级,只有高于等于 ...

  2. 【Python实战】机型自动化标注(搜狗爬虫实现)

    1. 引言 从安卓手机收集上来的机型大都为这样: mi|5 mi|4c mi 4c 2014022 kiw-al10 nem-tl00h 收集的机型大都杂乱无章,不便于做统计分析.因此,标注显得尤为重 ...

  3. Python爬虫入门一之综述

    大家好哈,最近博主在学习Python,学习期间也遇到一些问题,获得了一些经验,在此将自己的学习系统地整理下来,如果大家有兴趣学习爬虫的话,可以将这些文章作为参考,也欢迎大家一共分享学习经验. Pyth ...

  4. 【python网络编程】新浪爬虫:关键词搜索爬取微博数据

    上学期参加了一个大数据比赛,需要抓取大量数据,于是我从新浪微博下手,本来准备使用新浪的API的,无奈新浪并没有开放关键字搜索的API,所以只能用爬虫来获取了.幸运的是,新浪提供了一个高级搜索功能,为我 ...

  5. [Python爬虫]cnblogs博客备份工具(可扩展成并行)

    并发爬虫小练习. 直接粘贴到本地,命名为.py文件即可运行,运行时的参数为你想要爬取的用户.默认是本博客. 输出是以用户名命名的目录,目录内便是博客内容. 仅供学习python的多线程编程方法,后续会 ...

  6. 网页爬虫--scrapy进阶

    本篇将谈一些scrapy的进阶内容,帮助大家能更熟悉这个框架. 1. 站点选取 现在的大网站基本除了pc端都会有移动端,所以需要先确定爬哪个. 比如爬新浪微博,有以下几个选择: www.weibo.c ...

  7. Python爬虫(图片)编写过程中遇到的问题

    最近我突然对网络爬虫开窍了,真正做起来的时候发现并不算太难,都怪我以前有点懒,不过近两年编写了一些程序,手感积累了一些肯定也是因素,总之,还是惭愧了.好了,说正题,我把这两天做爬虫的过程中遇到的问题总 ...

  8. 网页爬虫--scrapy入门

    本篇从实际出发,展示如何用网页爬虫.并介绍一个流行的爬虫框架~ 1. 网页爬虫的过程 所谓网页爬虫,就是模拟浏览器的行为访问网站,从而获得网页信息的程序.正因为是程序,所以获得网页的速度可以轻易超过单 ...

  9. 爬虫总结_python

    import sqlite3 Python 的一个非常大的优点是很容易写很容易跑起来,缺点就是很多不那么著名的(甚至一些著名的)程序和库都不像 C 和 C++ 那边那样专业.可靠(当然这也有动态类型 ...

随机推荐

  1. python显示灰度图

    import matplotlib import matplotlib.pyplot as plt %matplotlib inline im=plt.imread('../lena.jpg', py ...

  2. 写给iOS小白的MVVM教程(序)

    这几天,需要重构下部分代码,这里简要记录下.但是涉及的技术要点还是很多,所以分为多个篇章叙述.此教程来源于,并将于应用于实践,不做过多的概念性阐释和争论.每个篇章都会附上实际的可执行的代码.因涉及的技 ...

  3. LArea 微信端 地址选择

    最近做到一个项目,微信端的商城需要地址选择功能 在百度上看了,采用LArea.js....下载实例,在移动端模拟器上运行是比较好的, 在微信上模拟后出现很多问题, 1,出现undefined 都定义正 ...

  4. zabbix proxy安装配置

    1.下载软件zabbix-2.2.1.tar.gz 1.1解压 tar xvf zabbix-2.2.1.tar.gz 1.2编译安装 cd zabbix-2.2.1./configure --pre ...

  5. zookeeper的搭建方法

    1.创建三台虚拟机分别在虚拟机上安装Ubuntu16.04Server版的系统. 2.首先选择配置好第一台虚拟机,使用命令vim /etc/hosts对该文件进行修改 3.将zookeeper-3.4 ...

  6. 生产-消费模式的synchronized和lock实现(十)

    lock: package com.net.thread.lock; import java.util.concurrent.locks.Condition; import java.util.con ...

  7. 英文缩写SFR

    英文缩写为SFR,是Special Function Register(特殊功能寄存器)的缩写.

  8. 统计输入任意的字符中中英文字母,空格和其他字符的个数 python

    这里用到了三个函数: #判断是否为数字:str.isdigit()#是否为字母:str.isalpha()#是否为空格:str.isspace() def tongji(str): alpha = 0 ...

  9. Git ---游离状态下的commit 分支切换与找回,commit之后无法找到历史记录

    commit之后无法找到历史记录 https://blog.csdn.net/zyb2017/article/details/78307688

  10. WRITE命令 書式設定オプション

    書式設定オプション WRITE 命令では.さまざまな書式設定オプションが使用することができます. 構文 WRITE ....f option. 全データ型の書式設定オプション オプション 機能 LEF ...