爬虫:Scrapy11 - Logging
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的更多相关文章
- Python网络爬虫_Scrapy框架_2.logging模块的使用
logging模块提供日志服务 在scrapy框架中已经对其进行一些操作所以使用更为简单 在Scrapy框架中使用: 1.在setting.py文件中设置LOG_LEVEL(设置日志等级,只有高于等于 ...
- 【Python实战】机型自动化标注(搜狗爬虫实现)
1. 引言 从安卓手机收集上来的机型大都为这样: mi|5 mi|4c mi 4c 2014022 kiw-al10 nem-tl00h 收集的机型大都杂乱无章,不便于做统计分析.因此,标注显得尤为重 ...
- Python爬虫入门一之综述
大家好哈,最近博主在学习Python,学习期间也遇到一些问题,获得了一些经验,在此将自己的学习系统地整理下来,如果大家有兴趣学习爬虫的话,可以将这些文章作为参考,也欢迎大家一共分享学习经验. Pyth ...
- 【python网络编程】新浪爬虫:关键词搜索爬取微博数据
上学期参加了一个大数据比赛,需要抓取大量数据,于是我从新浪微博下手,本来准备使用新浪的API的,无奈新浪并没有开放关键字搜索的API,所以只能用爬虫来获取了.幸运的是,新浪提供了一个高级搜索功能,为我 ...
- [Python爬虫]cnblogs博客备份工具(可扩展成并行)
并发爬虫小练习. 直接粘贴到本地,命名为.py文件即可运行,运行时的参数为你想要爬取的用户.默认是本博客. 输出是以用户名命名的目录,目录内便是博客内容. 仅供学习python的多线程编程方法,后续会 ...
- 网页爬虫--scrapy进阶
本篇将谈一些scrapy的进阶内容,帮助大家能更熟悉这个框架. 1. 站点选取 现在的大网站基本除了pc端都会有移动端,所以需要先确定爬哪个. 比如爬新浪微博,有以下几个选择: www.weibo.c ...
- Python爬虫(图片)编写过程中遇到的问题
最近我突然对网络爬虫开窍了,真正做起来的时候发现并不算太难,都怪我以前有点懒,不过近两年编写了一些程序,手感积累了一些肯定也是因素,总之,还是惭愧了.好了,说正题,我把这两天做爬虫的过程中遇到的问题总 ...
- 网页爬虫--scrapy入门
本篇从实际出发,展示如何用网页爬虫.并介绍一个流行的爬虫框架~ 1. 网页爬虫的过程 所谓网页爬虫,就是模拟浏览器的行为访问网站,从而获得网页信息的程序.正因为是程序,所以获得网页的速度可以轻易超过单 ...
- 爬虫总结_python
import sqlite3 Python 的一个非常大的优点是很容易写很容易跑起来,缺点就是很多不那么著名的(甚至一些著名的)程序和库都不像 C 和 C++ 那边那样专业.可靠(当然这也有动态类型 ...
随机推荐
- FastRCNN 训练自己数据集 (1编译配置)
http://www.cnblogs.com/louyihang-loves-baiyan/p/4885659.html 按照博客的教程配置,但自己在服务器上配置时,USE_CUDNN = 1会报错, ...
- 将base64编码转换图片
/// <summary> /// 二进制Base64编码转图片 /// </summary> /// <param name="bytes"> ...
- oracle: listener.ora 、sqlnet.ora 、tnsnames.ora的配置及例子
1.解决问题:TNS或者数据库不能登录. 最简单有效方法:使用oracle系统提供的工具 netca 配置(把原来的删除掉重新配置) $netca 2.然而,仍有疑问:如何指定'l ...
- 旧文备份:AVR读写EEPROM分析
由于AVR的EEPROM写周期比较长(一般为毫秒级),因此在编程使用过程中要特别注意.对于读EEPROM没什么好说的,读一个字节的数据要耗费4个时钟周期,可以忍受,写就比较麻烦了,虽然放在EEPROM ...
- C#中类的成员
一.C#中类的成员 1. 类的成员 类中的数据和函数都称为类的成员.类的成员可以分为两类: ?类本身所声明的. ?从基类中继承来的. 如果在类声明中没有指定基类,则该类将继承System.Object ...
- CentOS 7 下 jdk8 安装教程
方法一: 一.下载 官网下载地址 下载需要确认当前系统是32位还是64位,可通过命令查询: sudo uname --m 根据查询结果下载对应的jdk版本(如): i686 //表 ...
- 工具类(为控件设置色值) - iOS
为了便于日常开发效率,因此创建了一些小的工具类便于使用.具体 code 如下:声明: /* 为控件设置色值 */ #import <UIKit/UIKit.h> @interface UI ...
- 时间戳与QDateTime相互转换
最近项目中需要将日期时间输出到Excel中,程序使用Qt开发,使用第三方库QtXlsx进行Excel读写操作.Excel中第一列为时间,时间间隔为1小时,如图所示. 赋值起始时间stDTime,则后续 ...
- 【学时总结】◆学时·VIII◆ 树形DP
◆学时·VIII◆ 树形DP DP像猴子一样爬上了树……QwQ ◇ 算法概述 基于树的模型,由于树上没有环,满足DP的无后效性,可以充分发挥其强大统计以及计算答案的能力. 一般来说树形DP的状态定义有 ...
- JAVA / MySql 编程—— 第三章 高级查询(一)
1. 修改表: (1)修改表名语法: ALTER TABLE <旧表名> RENAME [ TO ] <新表名>: 注意:其中[TO]为可选参数,使用与否不影响结 ...