国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Python從入門(mén)到進(jìn)階】53、Scrapy日志信息及日志級(jí)別

這篇具有很好參考價(jià)值的文章主要介紹了【Python從入門(mén)到進(jìn)階】53、Scrapy日志信息及日志級(jí)別。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

接上篇《52、CrawlSpider鏈接提取器的使用》
上一篇我們學(xué)習(xí)了基于規(guī)則進(jìn)行跟蹤和自動(dòng)爬取網(wǎng)頁(yè)數(shù)據(jù)的“特殊爬蟲(chóng)”CrawlSpider。本篇我們來(lái)學(xué)習(xí)Scrapy的日志信息及日志級(jí)別。

一、引言

1、日志在Scrapy中的重要性

在Scrapy框架中,日志扮演著至關(guān)重要的角色。日志不僅記錄了爬蟲(chóng)在運(yùn)行過(guò)程中的詳細(xì)行為,還提供了大量有助于開(kāi)發(fā)者定位問(wèn)題和優(yōu)化程序的信息。通過(guò)日志,開(kāi)發(fā)者可以了解到爬蟲(chóng)的每一步操作,包括請(qǐng)求的發(fā)送、響應(yīng)的接收、數(shù)據(jù)的解析以及任何可能出現(xiàn)的異常。這些信息對(duì)于調(diào)試程序、監(jiān)控運(yùn)行狀態(tài)以及優(yōu)化性能都是不可或缺的。

2、日志級(jí)別及其作用

日志級(jí)別在Scrapy中同樣具有重要意義。不同級(jí)別的日志信息反映了不同層次的程序運(yùn)行狀況。通過(guò)設(shè)置合適的日志級(jí)別,開(kāi)發(fā)者可以過(guò)濾掉大量不必要的細(xì)節(jié)信息,只關(guān)注關(guān)鍵的運(yùn)行狀態(tài)和錯(cuò)誤提示。這不僅可以提高開(kāi)發(fā)效率,還有助于快速定位并解決潛在的問(wèn)題。同時(shí),合理的日志級(jí)別設(shè)置也有助于保護(hù)程序的敏感信息,避免信息泄露的風(fēng)險(xiǎn)。因此,深入理解Scrapy的日志級(jí)別及其使用方法是每一個(gè)Scrapy開(kāi)發(fā)者必須掌握的技能。

二、Scrapy日志系統(tǒng)概述

1、Scrapy日志系統(tǒng)的基本結(jié)構(gòu)

Scrapy的日志系統(tǒng)采用了層次化的設(shè)計(jì),確保日志信息能夠有序地生成、處理和輸出。它主要由以下幾個(gè)關(guān)鍵組件構(gòu)成:

日志記錄器(Logger):Scrapy中的每個(gè)模塊或組件都有自己的日志記錄器。這些記錄器負(fù)責(zé)收集并處理與該模塊或組件相關(guān)的日志信息。
日志處理器(Handler):日志處理器負(fù)責(zé)將日志信息輸出到指定的目的地,如控制臺(tái)、文件或遠(yuǎn)程服務(wù)器等。Scrapy支持多種類(lèi)型的處理器,以滿(mǎn)足不同的輸出需求。
日志級(jí)別(Level):Scrapy支持多種日志級(jí)別,包括DEBUG、INFO、WARNING、ERROR和CRITICAL。這些級(jí)別用于區(qū)分不同重要程度的日志信息,幫助開(kāi)發(fā)者快速定位問(wèn)題。
日志格式(Formatter):日志格式定義了日志信息的輸出格式,包括時(shí)間戳、日志級(jí)別、模塊名、消息內(nèi)容等。Scrapy允許開(kāi)發(fā)者自定義日志格式,以滿(mǎn)足特定的需求。

2、日志信息的生成與輸出

在Scrapy中,日志信息的生成與輸出是一個(gè)自動(dòng)化的過(guò)程。當(dāng)爬蟲(chóng)運(yùn)行時(shí),各個(gè)模塊和組件會(huì)根據(jù)其內(nèi)部狀態(tài)和操作生成相應(yīng)的日志信息。這些信息首先被傳遞給對(duì)應(yīng)的日志記錄器,記錄器根據(jù)配置的日志級(jí)別對(duì)信息進(jìn)行過(guò)濾和處理。然后,處理后的日志信息被傳遞給相應(yīng)的日志處理器,由處理器負(fù)責(zé)將其輸出到指定的目的地。

Scrapy的日志系統(tǒng)支持多種輸出方式,包括控制臺(tái)輸出、文件存儲(chǔ)和遠(yuǎn)程日志服務(wù)等。開(kāi)發(fā)者可以根據(jù)自己的需求選擇合適的輸出方式,并配置相應(yīng)的處理器。

在Scrapy中,日志信息的生成與輸出通常是自動(dòng)進(jìn)行的,無(wú)需開(kāi)發(fā)者顯式編寫(xiě)日志記錄代碼。Scrapy內(nèi)部使用了Python的logging模塊來(lái)處理日志,并在框架的不同部分自動(dòng)記錄日志信息。以下是一個(gè)簡(jiǎn)單的Scrapy spider示例,其中日志信息的生成和輸出是自動(dòng)發(fā)生的:

import scrapy

class BaiduSpiderSpider(scrapy.Spider):
? ? name = "baidu_spider"
? ? allowed_domains = ["www.baidu.com"]
? ? start_urls = ["https://www.baidu.com"]
? ? # 百度設(shè)置了反爬,使用這個(gè)程序測(cè)試時(shí),記得把setting.py的ROBOTSTXT_OBEY參數(shù)改為False

? ? def parse(self, response):
? ? ? ? # 當(dāng)爬蟲(chóng)解析頁(yè)面時(shí),會(huì)自動(dòng)生成并輸出日志信息
? ? ? ? self.logger.info('被抓取的頁(yè)面地址為: %s', response.url)
? ? ? ? # ... 其他解析邏輯 ...
? ? ? ? pass

在這個(gè)示例中,self.logger.info()用于記錄一條INFO級(jí)別的日志信息。Scrapy會(huì)自動(dòng)處理這條日志信息的輸出,通常默認(rèn)輸出到控制臺(tái):
【Python從入門(mén)到進(jìn)階】53、Scrapy日志信息及日志級(jí)別,Python從入門(mén)到進(jìn)階,python,scrapy,scrapy日志,日志級(jí)別,自定義日志

3、日志系統(tǒng)的配置與自定義

Scrapy的日志系統(tǒng)提供了豐富的配置選項(xiàng),允許開(kāi)發(fā)者根據(jù)實(shí)際需求進(jìn)行自定義。通過(guò)修改Scrapy的配置文件或編寫(xiě)自定義的日志處理邏輯,開(kāi)發(fā)者可以控制日志的級(jí)別、格式、輸出方式等。

(1)設(shè)置日志級(jí)別

你可以設(shè)置整個(gè)Scrapy項(xiàng)目的日志級(jí)別,或者為特定的組件設(shè)置不同的日志級(jí)別(在settings.py中設(shè)置):

# settings.py ?
??
# 設(shè)置整個(gè)項(xiàng)目的日志級(jí)別為INFO ?
LOG_LEVEL = 'INFO' ?
??
# 或者為特定的組件設(shè)置日志級(jí)別 ?
# 例如,為Scrapy引擎設(shè)置DEBUG級(jí)別 ?
LOG_LEVEL_SCRAPY = 'DEBUG'

除了LOG_LEVEL外,日志系統(tǒng)還包含其他參數(shù):

LOG_FILE: 日志輸出文件。如果設(shè)置為None,日志信息將直接打印到控制臺(tái)。通過(guò)設(shè)置具體的文件路徑和名稱(chēng),你可以將日志保存到本地文件中,方便后續(xù)查看和分析。
LOG_ENABLED: 是否啟用日志系統(tǒng)。默認(rèn)為T(mén)rue,表示啟用日志記錄。如果設(shè)置為False,則不會(huì)記錄任何日志信息。
LOG_ENCODING: 日志編碼。默認(rèn)為utf-8,表示使用UTF-8編碼來(lái)保存日志信息。你可以根據(jù)需要調(diào)整此設(shè)置以適應(yīng)不同的編碼要求。
LOG_FORMAT LOG_DATEFORMAT: 分別用于定義日志的格式和日期格式。通過(guò)自定義這些格式,你可以控制日志信息的顯示方式,使其更符合你的需求。

(2)自定義日志輸出格式

你可以自定義日志的輸出格式,使其包含更多或更少的信息(在settings.py中設(shè)置):

# settings.py ?
??
# 自定義日志輸出格式 ?
LOG_FORMAT = '%(asctime)s [%(name)s] %(levelname)s: %(message)s' ?
LOG_DATEFORMAT = '%Y-%m-%d %H:%M:%S'

測(cè)試效果:
【Python從入門(mén)到進(jìn)階】53、Scrapy日志信息及日志級(jí)別,Python從入門(mén)到進(jìn)階,python,scrapy,scrapy日志,日志級(jí)別,自定義日志

(3)將日志輸出到文件

默認(rèn)情況下,Scrapy將日志輸出到控制臺(tái)。你可以通過(guò)添加自定義的日志處理器來(lái)將日志輸出到文件(在settings.py中設(shè)置):

# settings.py ?
??
# 添加自定義的日志處理器,將日志輸出到文件 ?
from scrapy.utils.log import configure_logging
import logging


class FilelogHandler(logging.FileHandler):
? ? def emit(self, record):
? ? ? ? msg = self.format(record)
? ? ? ? self.stream.write(msg + '\n')

# Scrapy會(huì)設(shè)置一些默認(rèn)設(shè)置,并在運(yùn)行命令時(shí)借助scrapy.utils.log.configure_logging()來(lái)處理這些設(shè)置。
# 當(dāng)Scrapy的命令行工具(如scrapy crawl)被執(zhí)行時(shí),它會(huì)自動(dòng)調(diào)用configure_logging來(lái)設(shè)置默認(rèn)的日志配置。這包括設(shè)置日志級(jí)別、輸出格式、處理器等。
configure_logging({
? ? 'LOG_FILE': 'baidu_spider.log',
? ? 'loggers': {
? ? ? ? 'baidu_spider': {
? ? ? ? ? ? 'level': 'DEBUG',
? ? ? ? ? ? 'handlers': ['file'],
? ? ? ? ? ? 'propagate': True,
? ? ? ? },
? ? },
? ? 'handlers': {
? ? ? ? 'file': {
? ? ? ? ? ? 'level': 'DEBUG',
? ? ? ? ? ? 'class': 'settings.FilelogHandler',
? ? ? ? ? ? 'filename': 'baidu_spider.log',
? ? ? ? ? ? 'append': True,
? ? ? ? }
? ? },
})

在這個(gè)示例中,我們定義了一個(gè)自定義的FileLogHandler類(lèi),并將其添加到Scrapy的日志配置中。這樣,Scrapy就會(huì)將日志信息輸出到指定的文件myspider.log中。

請(qǐng)注意,為了正確實(shí)現(xiàn)自定義日志處理器,你需要根據(jù)具體的Scrapy版本和Python版本進(jìn)行適當(dāng)?shù)恼{(diào)整。上述代碼僅作為示例,實(shí)際使用時(shí)可能需要根據(jù)具體情況進(jìn)行修改。

三、Scrapy日志級(jí)別詳解

1、Scrapy支持的日志級(jí)別及其含義

Scrapy支持的日志級(jí)別及其含義如下:

CRITICAL - 嚴(yán)重錯(cuò)誤:這個(gè)級(jí)別用于記錄系統(tǒng)中出現(xiàn)的嚴(yán)重錯(cuò)誤,這些錯(cuò)誤通常導(dǎo)致程序無(wú)法繼續(xù)運(yùn)行或需要立即關(guān)注。
ERROR - 一般錯(cuò)誤:記錄系統(tǒng)運(yùn)行時(shí)遇到的錯(cuò)誤情況,但這些問(wèn)題通常不會(huì)導(dǎo)致程序立即停止運(yùn)行。
WARNING - 警告信息:表示可能出現(xiàn)問(wèn)題的情況,但這些問(wèn)題不一定是錯(cuò)誤,只是需要開(kāi)發(fā)者的注意。
INFO - 一般信息:記錄程序運(yùn)行時(shí)的常規(guī)信息,如啟動(dòng)、關(guān)閉、任務(wù)進(jìn)度等。
DEBUG - 調(diào)試信息:包含最詳細(xì)的程序運(yùn)行信息,通常用于開(kāi)發(fā)或調(diào)試過(guò)程中,幫助開(kāi)發(fā)者理解程序內(nèi)部的運(yùn)行情況。

在Scrapy中,默認(rèn)的日志級(jí)別是DEBUG,這意味著所有DEBUG級(jí)別及以上的日志信息都會(huì)被記錄。如果你只想看到ERROR級(jí)別或更高級(jí)別的日志信息,可以在Scrapy項(xiàng)目的settings.py文件中設(shè)置LOG_LEVEL = 'ERROR'。

此外,你也可以通過(guò)終端選項(xiàng)-loglevel/-L來(lái)設(shè)置日志級(jí)別。不同的日志級(jí)別可以幫助開(kāi)發(fā)者根據(jù)需求快速定位問(wèn)題,或者獲取不同詳細(xì)程度的程序運(yùn)行信息。

2、日志級(jí)別的實(shí)際應(yīng)用場(chǎng)景舉例

DEBUG級(jí)別:在開(kāi)發(fā)或調(diào)試Scrapy爬蟲(chóng)時(shí),將日志級(jí)別設(shè)置為DEBUG是非常有用的。DEBUG級(jí)別會(huì)記錄最詳細(xì)的程序運(yùn)行信息,包括請(qǐng)求和響應(yīng)的詳細(xì)信息、解析過(guò)程中的每一步操作等。這些信息有助于開(kāi)發(fā)者深入了解爬蟲(chóng)的內(nèi)部運(yùn)行情況,發(fā)現(xiàn)并解決潛在的問(wèn)題。
INFO級(jí)別:當(dāng)爬蟲(chóng)開(kāi)發(fā)完成后,進(jìn)入測(cè)試或生產(chǎn)環(huán)境時(shí),可以將日志級(jí)別設(shè)置為INFO。INFO級(jí)別會(huì)記錄程序運(yùn)行時(shí)的常規(guī)信息,如啟動(dòng)、關(guān)閉、任務(wù)進(jìn)度等。這些信息可以幫助監(jiān)控爬蟲(chóng)的運(yùn)行狀態(tài),確保它按預(yù)期執(zhí)行。
WARNING級(jí)別:在某些情況下,開(kāi)發(fā)者可能只關(guān)心可能出現(xiàn)問(wèn)題的情況,但不希望被過(guò)多的日志信息所干擾。此時(shí),可以將日志級(jí)別設(shè)置為WARNING。WARNING級(jí)別會(huì)記錄那些可能導(dǎo)致問(wèn)題的操作或情況,但不會(huì)記錄過(guò)多的細(xì)節(jié)信息。
ERROR級(jí)別:當(dāng)爬蟲(chóng)在生產(chǎn)環(huán)境中運(yùn)行時(shí),開(kāi)發(fā)者通常只關(guān)心出現(xiàn)的錯(cuò)誤情況。此時(shí),可以將日志級(jí)別設(shè)置為ERROR。ERROR級(jí)別只會(huì)記錄程序運(yùn)行時(shí)遇到的錯(cuò)誤情況,幫助開(kāi)發(fā)者快速定位并解決問(wèn)題。

通過(guò)合理設(shè)置日志級(jí)別,開(kāi)發(fā)者可以根據(jù)不同階段的需求,獲取適當(dāng)詳細(xì)程度的程序運(yùn)行信息,從而更好地管理和維護(hù)Scrapy爬蟲(chóng)。

轉(zhuǎn)載請(qǐng)注明出處:https://guangzai.blog.csdn.net/article/details/138247107文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-859933.html

到了這里,關(guān)于【Python從入門(mén)到進(jìn)階】53、Scrapy日志信息及日志級(jí)別的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【100天精通Python】Day53:Python 數(shù)據(jù)分析_NumPy數(shù)據(jù)操作和分析進(jìn)階

    目錄 1. 廣播 ?2 文件輸入和輸出 3 隨機(jī)數(shù)生成 4 線(xiàn)性代數(shù)操作 ?5 進(jìn)階操作

    2024年02月09日
    瀏覽(96)
  • python爬蟲(chóng)進(jìn)階篇:Scrapy中使用Selenium+Firefox瀏覽器爬取滬深A(yù)股股票行情

    上篇記錄了Scrapy搭配selenium的使用方法,有了基本的了解后我們可以將這項(xiàng)技術(shù)落實(shí)到實(shí)際需求中。目前很多股票網(wǎng)站的行情信息都是動(dòng)態(tài)數(shù)據(jù),我們可以用Scrapy+selenium對(duì)股票進(jìn)行實(shí)時(shí)采集并持久化,再進(jìn)行數(shù)據(jù)分析、郵件通知等操作。 詳情請(qǐng)看上篇筆記 items middlewares setti

    2024年02月04日
    瀏覽(29)
  • python中如何打印日志信息

    python中如何打印日志信息

    日志打印方式 常見(jiàn)的Python日志打印方式為使用內(nèi)置函數(shù) print() 或者 logging 模塊打印日志。 print() 只能將日志打印至控制臺(tái),不推薦此方式 logging 模塊默認(rèn)將日志打印至控制臺(tái),也可以配置打印到指定日志文件,推薦使用此方式 logging模塊 日志等級(jí) logging提供了函數(shù)來(lái)做日志處

    2024年02月06日
    瀏覽(24)
  • 《零基礎(chǔ)入門(mén)學(xué)習(xí)Python》第063講:論一只爬蟲(chóng)的自我修養(yǎng)11:Scrapy框架之初窺門(mén)徑

    《零基礎(chǔ)入門(mén)學(xué)習(xí)Python》第063講:論一只爬蟲(chóng)的自我修養(yǎng)11:Scrapy框架之初窺門(mén)徑

    上一節(jié)課我們好不容易裝好了?Scrapy,今天我們就來(lái)學(xué)習(xí)如何用好它,有些同學(xué)可能會(huì)有些疑惑,既然我們懂得了Python編寫(xiě)爬蟲(chóng)的技巧,那要這個(gè)所謂的爬蟲(chóng)框架又有什么用呢?其實(shí)啊,你懂得Python寫(xiě)爬蟲(chóng)的代碼,好比你懂武功,會(huì)打架,但行軍打仗你不行,畢竟敵人是千軍

    2024年02月16日
    瀏覽(65)
  • python-自動(dòng)化篇-辦公-批量新建文件夾并保存日志信息

    python-自動(dòng)化篇-辦公-批量新建文件夾并保存日志信息

    因?yàn)闃I(yè)務(wù)需要,每天都需要按當(dāng)天的日期創(chuàng)建很多新文件夾。把這種重復(fù)又繁重的操作交給Python來(lái)做,一直是我的目標(biāo)。先說(shuō)下要求: 默認(rèn)在桌面新建文件夾。 文件夾命名方式,“月.日-1”,比如7.8-1,7.8-2。7是代表當(dāng)天的月份,不能顯示07。8是代表當(dāng)天的日期,不能顯示

    2024年02月20日
    瀏覽(25)
  • chatgpt賦能python:Python%(.2f)怎么用?從入門(mén)到進(jìn)階

    Python作為一種高效的編程語(yǔ)言,擁有廣泛的應(yīng)用領(lǐng)域,尤其在AI、數(shù)據(jù)分析、Web開(kāi)發(fā)以及自動(dòng)化運(yùn)維等方面得到了廣泛的應(yīng)用,成為當(dāng)下最受歡迎的編程語(yǔ)言之一。在這篇SEO文章中,我們將介紹Python%(.2f)如何使用,并準(zhǔn)備一些例子以便你快速上手。 Python%(.2f)作為Python語(yǔ)言的一

    2024年02月06日
    瀏覽(22)
  • Python進(jìn)階知識(shí):整理1 -> pySpark入門(mén)

    Python進(jìn)階知識(shí):整理1 -> pySpark入門(mén)

    pySpark大數(shù)據(jù)分析過(guò)程分為3步: 數(shù)據(jù)輸入、數(shù)據(jù)計(jì)算、數(shù)據(jù)輸出 ,以下內(nèi)容將重點(diǎn)介紹這三個(gè)過(guò)程 ? 在數(shù)據(jù)輸入完成后,都會(huì)得到一個(gè) RDD類(lèi)的對(duì)象 (RDD全稱(chēng)為彈性分布式數(shù)據(jù)集) map算子是將RDD的數(shù)據(jù)進(jìn)行一條條處理(處理的邏輯基于map算子接收的處理函數(shù)),返回新的R

    2024年01月18日
    瀏覽(57)
  • 【0基礎(chǔ)入門(mén)Python Web筆記】四、python 之計(jì)算器的進(jìn)階之路

    【0基礎(chǔ)入門(mén)Python Web筆記】四、python 之計(jì)算器的進(jìn)階之路

    一、python 之基礎(chǔ)語(yǔ)法、基礎(chǔ)數(shù)據(jù)類(lèi)型、復(fù)合數(shù)據(jù)類(lèi)型及基本操作 二、python 之邏輯運(yùn)算和制流程語(yǔ)句 三、python 之函數(shù)以及常用內(nèi)置函數(shù) 現(xiàn)在的實(shí)戰(zhàn)需求: 計(jì)算出任意兩個(gè)數(shù)字的加法之和 可以通過(guò)一下代碼直接計(jì)算出a和b之和: 以上代碼只需要修改a和b的值,就可以輕松計(jì)算

    2024年02月11日
    瀏覽(22)
  • 【Python從入門(mén)到進(jìn)階】22、urllib庫(kù)基本使用

    【Python從入門(mén)到進(jìn)階】22、urllib庫(kù)基本使用

    接上篇《21、爬蟲(chóng)相關(guān)概念介紹》 上一篇我們介紹了爬蟲(chóng)的相關(guān)概念,本篇我們來(lái)介紹一下用Python實(shí)現(xiàn)爬蟲(chóng)的必備基礎(chǔ),urllib庫(kù)的學(xué)習(xí)。 我們今后的學(xué)習(xí)可能需要用到很多python庫(kù)(library),及引用其他已經(jīng)編寫(xiě)好的程序代碼模塊,來(lái)提高我們的開(kāi)發(fā)效率。 python庫(kù)(library)是

    2024年02月07日
    瀏覽(25)
  • 【Python從入門(mén)到進(jìn)階】35、selenium基本語(yǔ)法學(xué)習(xí)

    【Python從入門(mén)到進(jìn)階】35、selenium基本語(yǔ)法學(xué)習(xí)

    接上篇《34、selenium基本概念及安裝流程》 上一篇我們介紹了selenium技術(shù)的基礎(chǔ)概念以及安裝和調(diào)用的流程,本篇我們來(lái)學(xué)習(xí)selenium的基本語(yǔ)法,包括元素定位以及訪問(wèn)元素信息的操作。 Selenium元素定位是指通過(guò)特定的方法在網(wǎng)頁(yè)中準(zhǔn)確定位到需要操作的元素,例如按鈕、文本

    2024年02月09日
    瀏覽(15)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包