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. Action 语法的简介

    https://www.cnblogs.com/LipeiNet/p/4694225.html https://www.cnblogs.com/Gyoung/archive/2013/04/04/29 ...

  2. Deep Learning Libraries by Language

    Deep Learning Libraries by Language Tweet         Python Theano is a python library for defining and ...

  3. 用keytool制作证书并在tomcat配置https服务(三)

    用keytool制作证书并在tomcat配置https服务(一) 用keytool制作证书并在tomcat配置https服务(二) 用keytool制作证书并在tomcat配置https服务(四) 模 ...

  4. acc_set_device_num && acc_get_device_num例程

    void acc_set_device_num( int, acc_device_t ); 描述在指定类型的所有设备中, acc_set_device_num 告诉运行时库环境用哪一个设备.如果 de ...

  5. javaScript校验图片大小、格式

    1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or ...

  6. Spring MVC 接收前端参数的方式

    方式一: 普通方式接收 1 @RequestMapping("/index") 2 public String getUserName(String username) { 3 S ...

  7. SSH 登录时出现如下错误:No supported key exchange algorithms

    https://help.aliyun.com/knowledge_detail/41486.html

  8. hasattr() & getattr() & setattr()

    Python的hasattr() getattr() setattr() 函数使用方法详解   感谢作者 ---> 原文链接 hasattr(object, name) 判断一个对象里面是否有n ...

  9. Android 程序中获取一个反向 Shell

    代码如下: String command = "ls -al /"; Process process = Runtime.getRuntime().exec(command); 之 ...

  10. 大话目标检测经典模型(RCNN、Fast RCNN、Faster RCNN)

      目标检测是深度学习的一个重要应用,就是在图片中要将里面的物体识别出来,并标出物体的位置,一般需要经过两个步骤:1.分类,识别物体是什么 2.定位,找出物体在哪里 除了对单个物体进行检测,还要能支持 ...