Python爬虫5.5 — scrapy框架logging模块的使用
程序员文章站
2022-05-12 10:35:08
...
综述
本系列文档用于对Python爬虫技术的学习进行简单的教程讲解,巩固自己技术知识的同时,万一一不小心又正好对你有用那就更好了。
Python 版本是3.7.4
本篇文章主要讲解日志模块(logging)的使用。
log 介绍
在第一篇入门文章中我们嫌打印的日志信息过多,稍微对日志设置了一下打印等价:
LOG_LEVEL = "WARNING"
仅打印WARNING
等级及其以上的日志信息。
关于log等级
Scrapy提供5层logging级别:
-
CRITICAL
- 严重错误(critical) -
ERROR
- 一般错误(regular errors) -
WARNING
- 警告信息(warning messages) -
INFO
- 一般信息(informational messages) -
DEBUG
- 调试信息(debugging messages)
上述对应等级的信息我们可以分别使用对应的函数进行输出:logging.critical()
、logging.error()
、logging.warning()
、logging.info()
、logging.debug()
;输入等级按照设置进行输出。scrapy默认输出DEBUG
等级日志。
logging.getLogger()
由于上述设置使用较为不方便,我们可以使用日志模块自带的logging.getLogger()
方法进行打印日志,实例代码如下:
import scrapy
import logging
logger = logging.getLogger(__name__)
class Qsbk1SpiderSpider(scrapy.Spider):
name = 'qsbk1_spider'
allowed_domains = ['qiushibaike.com']
start_urls = ['https://www.qiushibaike.com/text/']
def parse(self, response):
item = {}
for i in range(0, 10):
item['come_from'] = 'qsbk1'
item['data'] = i
logger.warning(item)
yield item
这种用法可以将是在哪个文件中输出的日志打印出来。
日志保存到本地
我们可以在setting.py中进行添加设置:
# 日志打印等级
LOG_LEVEL = "WARNING"
# 日志保存地址
LOG_FILE = './log.log'
设置了LOG_FILE
之后,日志将不会在终端控制台中进行输出。
自定义logger
上述我们可以在scrapy中可以使用,但是我们如何在普通代码中进行使用呢?我们可以在项目根目录下新建一个logger.py文件,代码如下:
import logging
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S',
# filename='log.log',
filemode='w'
) # 自定义设置日志的输出样式
logging.debug('This is debug message')
logging.info('This is info message')
logging.warning('This is warning message')
运行即可看到相应的打印效果。
logging.basicConfig()函数各参数说明:
-
filename
: 指定日志文件名 -
filemode
:和file函数意义相同,指定日志文件的打开模式,‘w’或’a’ -
format
:指定输出的格式和内容,format可以输出很多有用信息,如上例所示: -
%(levelno)s
:打印日志级别的数值 -
%(levelname)s
:打印日志级别名称` -
%(pathname)s
:打印当前执行程序的路径,其实就是sys.argv[0] -
%(filename)s
:打印当前执行程序名 -
%(funcName)s
:打印日志的当前函数 -
%(lineno)d
:打印日志的当前行号 -
%(asctime)s
:打印日志的时间 -
%(thread)d
:打印线程ID -
%(threadName)
:打印线程名称 -
%(process)d
:打印进程ID -
%(message)s
:打印日志信 -
datefmt
:指定时间格式,同time.strftime() -
level
:设置日志级别,默认为logging.WARNING -
stream
:指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略
其他博文链接
- Python爬虫1.1 — urllib基础用法教程
- Python爬虫1.2 — urllib高级用法教程
- Python爬虫1.3 — requests基础用法教程
- Python爬虫1.4 — requests高级用法教程
- Python爬虫2.1 — BeautifulSoup用法教程
- Python爬虫2.2 — xpath用法教程
- Python爬虫3.1 — json用法教程
- Python爬虫3.2 — csv用法教程
- Python爬虫3.3 — txt用法教程
- Python爬虫4.1 — threading(多线程)用法教程
- Python爬虫4.2 — ajax(动态网页数据抓取)用法教程
- Python爬虫4.3 — selenium基础用法教程
- Python爬虫4.4 — selenium高级用法教程
- Python爬虫4.5 — tesseract(图片验证码识别)用法教程
- Python爬虫5.1 — scrapy框架简单入门
- Python爬虫5.2 — scrapy框架pipeline模块的使用
- Python爬虫5.3 — scrapy框架spider[Request和Response]模块的使用
- Python爬虫5.4 — scrapy框架items模块的使用
推荐阅读
-
Python爬虫框架Scrapy安装使用步骤
-
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
-
Python使用logging模块实现打印log到指定文件的方法
-
python Scrapy爬虫框架的使用
-
Python爬虫框架scrapy实现的文件下载功能示例
-
Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
-
解读python logging模块的使用方法
-
Python使用Mechanize模块编写爬虫的要点解析
-
python爬虫scrapy框架之增量式爬虫的示例代码
-
Python:使用Scrapy框架的ImagesPipeline下载图片如何保持原图片名称呢?