綜述
本系列文檔用於對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.WARNINGstream
:指定將日誌的輸出流,可以指定輸出到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模塊的使用