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

【Python爬蟲(chóng)開(kāi)發(fā)基礎(chǔ)?】Scrapy架構(gòu)(組件介紹、架構(gòu)組成和工作原理)

這篇具有很好參考價(jià)值的文章主要介紹了【Python爬蟲(chóng)開(kāi)發(fā)基礎(chǔ)?】Scrapy架構(gòu)(組件介紹、架構(gòu)組成和工作原理)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

??個(gè)人主頁(yè):為夢(mèng)而生~ 關(guān)注我一起學(xué)習(xí)吧!
??專(zhuān)欄:python網(wǎng)絡(luò)爬蟲(chóng)從基礎(chǔ)到實(shí)戰(zhàn) 歡迎訂閱!后面的內(nèi)容會(huì)越來(lái)越有意思~
??往期推薦
??前面比較重要的基礎(chǔ)內(nèi)容
【Python爬蟲(chóng)開(kāi)發(fā)基礎(chǔ)⑧】XPath庫(kù)及其基本用法
【Python爬蟲(chóng)開(kāi)發(fā)基礎(chǔ)⑨】jsonpath和BeautifulSoup庫(kù)概述及其對(duì)比
【Python爬蟲(chóng)開(kāi)發(fā)基礎(chǔ)⑩】selenium概述
【Python爬蟲(chóng)開(kāi)發(fā)基礎(chǔ)?】requests庫(kù)概述(文件上傳、cookies處理、狀態(tài)碼處理、異常處理等)
【Python爬蟲(chóng)開(kāi)發(fā)基礎(chǔ)?】Scrapy庫(kù)概述(簡(jiǎn)介、安裝與基本使用)
??爬蟲(chóng)的實(shí)戰(zhàn)文章
【Python爬蟲(chóng)開(kāi)發(fā)實(shí)戰(zhàn)①】使用urllib以及XPath爬取可愛(ài)小貓圖片
【Python爬蟲(chóng)開(kāi)發(fā)實(shí)戰(zhàn)②】使用urllib以及jsonpath爬取即將上映電影信息
大家可以復(fù)制代碼感受一下爬蟲(chóng)的魅力~
??本期內(nèi)容:上一篇文章我們簡(jiǎn)單的介紹了Scrapy,這一篇文章我們接著來(lái)深入的講一下它的架構(gòu):組織架構(gòu)和工作原理



1 Scrapy的組件介紹

Scrapy 是一個(gè)用于爬取網(wǎng)站數(shù)據(jù)和執(zhí)行抓取任務(wù)的Python框架。它提供了一系列的組件,用于構(gòu)建和管理爬蟲(chóng)項(xiàng)目。下面是對(duì) Scrapy的幾個(gè)重要組件的介紹:

【Python爬蟲(chóng)開(kāi)發(fā)基礎(chǔ)?】Scrapy架構(gòu)(組件介紹、架構(gòu)組成和工作原理),python網(wǎng)絡(luò)爬蟲(chóng)從基礎(chǔ)到實(shí)戰(zhàn),python,爬蟲(chóng),scrapy,http,架構(gòu),開(kāi)發(fā)語(yǔ)言

  • Spider(爬蟲(chóng))

Spider 是 Scrapy 的最基本組件,用于定義如何抓取特定網(wǎng)站的數(shù)據(jù)。每一個(gè) Spider 都包含了一些用于抓取站點(diǎn)的初始URL和如何跟進(jìn)頁(yè)面中的鏈接的規(guī)則。Spider 通過(guò)解析頁(yè)面的內(nèi)容來(lái)抓取所需的數(shù)據(jù)。

  • Item(數(shù)據(jù)項(xiàng))

Item 用于定義要從網(wǎng)頁(yè)中提取的結(jié)構(gòu)化數(shù)據(jù)。你可以根據(jù)需要?jiǎng)?chuàng)建多個(gè) Item,每個(gè) Item 包含了一組字段,用于保存特定的數(shù)據(jù)。在 Spider 解析頁(yè)面時(shí),可以從頁(yè)面中提取相關(guān)數(shù)據(jù),并將其存儲(chǔ)到 Item 中。

  • Pipeline(管道)

Pipeline 可以定義對(duì) Item 進(jìn)行的數(shù)據(jù)處理操作。在 Spider 解析頁(yè)面并提取數(shù)據(jù)后,可以將數(shù)據(jù)傳遞給 Pipeline,在 Pipeline 中執(zhí)行數(shù)據(jù)清洗、驗(yàn)證、存儲(chǔ)等操作??梢杂卸鄠€(gè) Pipeline,它們按照優(yōu)先級(jí)順序依次處理 Item。

  • Project(項(xiàng)目)

Project 是指整個(gè)基于 Scrapy 的爬蟲(chóng)項(xiàng)目。它包含了所有的配置信息、Spider、Item、Pipeline、中間件等組件。一個(gè)項(xiàng)目可以包含多個(gè) Spider,每個(gè) Spider 負(fù)責(zé)爬取特定的網(wǎng)站或特定的數(shù)據(jù)。通過(guò)命令行工具或腳本,可以管理和運(yùn)行項(xiàng)目,執(zhí)行爬取任務(wù)。


2 Scrapy架構(gòu)組成

Scrapy 是一個(gè)基于異步網(wǎng)絡(luò)框架 Twisted,采用了事件驅(qū)動(dòng)的設(shè)計(jì)理念,具有高度的靈活性和可擴(kuò)展性。下面是 Scrapy的詳細(xì)架構(gòu)組成:

【Python爬蟲(chóng)開(kāi)發(fā)基礎(chǔ)?】Scrapy架構(gòu)(組件介紹、架構(gòu)組成和工作原理),python網(wǎng)絡(luò)爬蟲(chóng)從基礎(chǔ)到實(shí)戰(zhàn),python,爬蟲(chóng),scrapy,http,架構(gòu),開(kāi)發(fā)語(yǔ)言

  • Spiders(爬蟲(chóng))

Spider 是 Scrapy 框架中的主要組件,用于定義網(wǎng)站的抓取邏輯。每個(gè) Spider 都包含了一些用于抓取站點(diǎn)的初始 URL 和如何跟進(jìn)頁(yè)面中的鏈接的規(guī)則。Spider 通過(guò)解析頁(yè)面的內(nèi)容來(lái)抓取所需的數(shù)據(jù)。

  • Scheduler(調(diào)度器)

Scheduler 用于管理爬取任務(wù)的調(diào)度和隊(duì)列,它接收由 Spider 生成的請(qǐng)求,并根據(jù)一定的策略進(jìn)行排隊(duì)。Scheduler 負(fù)責(zé)將請(qǐng)求發(fā)送給下載器進(jìn)行處理,以確保爬蟲(chóng)能按照預(yù)定的順序爬取數(shù)據(jù)。

  • Downloader(下載器)

Downloader 負(fù)責(zé)下載請(qǐng)求的內(nèi)容并將其返回給 Spider 進(jìn)行解析。它可以處理使用 HTTP、HTTPS、FTP 等協(xié)議的請(qǐng)求,支持自動(dòng)處理重定向、Cookies、代理等功能,并能夠使用并發(fā)技術(shù)提高下載效率。

  • Item Pipeline(數(shù)據(jù)管道)

Item Pipeline 是用于處理由 Spider 提取的 Item 對(duì)象的組件。它負(fù)責(zé)對(duì) Item 進(jìn)行處理、清洗、驗(yàn)證、存儲(chǔ)等操作??梢杂卸鄠€(gè) Item Pipeline,它們按照優(yōu)先級(jí)順序依次處理 Item。

  • Downloader Middleware(下載器中間件)

Downloader Middleware 是位于下載器和調(diào)度器之間的一層處理組件。它可以攔截下載請(qǐng)求和下載響應(yīng),對(duì)它們進(jìn)行修改和處理。常見(jiàn)的應(yīng)用場(chǎng)景包括設(shè)置請(qǐng)求的 Headers、處理代理、處理 Cookies 等。

  • Spider Middleware(爬蟲(chóng)中間件)

Spider Middleware 是位于 Spider 和調(diào)度器之間的一層處理組件。它可以攔截 Spider 的輸入和輸出,對(duì)它們進(jìn)行修改和處理。常見(jiàn)的應(yīng)用場(chǎng)景包括處理抓取結(jié)果、處理異常、處理重定向等。

  • Item Loader(數(shù)據(jù)加載器)

Item Loader 是用于填充 Item 對(duì)象的組件。它負(fù)責(zé)從爬取的數(shù)據(jù)中解析出字段的值,并進(jìn)行預(yù)處理、格式化等操作??梢酝ㄟ^(guò)定義 Item Loader 來(lái)指定每個(gè)字段的處理規(guī)則。

  • Engine(引擎)

Engine 是 Scrapy 的核心調(diào)度器,負(fù)責(zé)控制整個(gè)爬取流程的運(yùn)行。它通過(guò)調(diào)度器、下載器、Spider 等組件的協(xié)同工作,實(shí)現(xiàn)了請(qǐng)求的調(diào)度和處理、頁(yè)面的解析和數(shù)據(jù)的提取等功能。

  • Spider Loader(爬蟲(chóng)加載器)

Spider Loader 負(fù)責(zé)加載和實(shí)例化 Spider,以及管理 Spider 的配置和設(shè)置。它可以根據(jù)配置文件或命令行參數(shù)自動(dòng)發(fā)現(xiàn)和加載項(xiàng)目中的 Spider。


3 Scrapy工作原理

【Python爬蟲(chóng)開(kāi)發(fā)基礎(chǔ)?】Scrapy架構(gòu)(組件介紹、架構(gòu)組成和工作原理),python網(wǎng)絡(luò)爬蟲(chóng)從基礎(chǔ)到實(shí)戰(zhàn),python,爬蟲(chóng),scrapy,http,架構(gòu),開(kāi)發(fā)語(yǔ)言

Scrapy的工作原理如下:

  1. 引擎(Engine)從 Spider 獲取要抓取的初始 URL,并向調(diào)度器(Scheduler)提交請(qǐng)求。
  2. 調(diào)度器根據(jù)一定的策略將請(qǐng)求入隊(duì),等待下載器(Downloader)進(jìn)行處理。
  3. 下載器從調(diào)度器獲取請(qǐng)求,并將其發(fā)送到指定的網(wǎng)站服務(wù)器,獲取響應(yīng)。
  4. 下載器將響應(yīng)返回給引擎,引擎將其傳遞給 Spider 進(jìn)行解析和處理。
  5. Spider 解析網(wǎng)頁(yè),提取所需的數(shù)據(jù),并生成新的請(qǐng)求,以及要存儲(chǔ)的數(shù)據(jù)項(xiàng)(Item),并將它們返回給引擎。
  6. 引擎將新生成的請(qǐng)求交給調(diào)度器處理,將存儲(chǔ)的數(shù)據(jù)項(xiàng)傳遞給 Item Pipeline 進(jìn)行處理。
  7. 在 Item Pipeline 中,對(duì)數(shù)據(jù)項(xiàng)進(jìn)行各種處理操作,如數(shù)據(jù)清洗、驗(yàn)證、存儲(chǔ)等。
  8. 經(jīng)過(guò) Item Pipeline 處理后,最終的數(shù)據(jù)項(xiàng)被存儲(chǔ)起來(lái),或者根據(jù)配置將其發(fā)送到其他目標(biāo)。
  9. 如果有新的請(qǐng)求生成,引擎將重復(fù)以上步驟,直到調(diào)度器中沒(méi)有更多的請(qǐng)求。

Scrapy 的工作原理是基于異步的事件驅(qū)動(dòng)模型實(shí)現(xiàn)的。整個(gè)過(guò)程中各個(gè)組件的協(xié)同工作使得爬取任務(wù)得以高效地進(jìn)行。在處理請(qǐng)求和響應(yīng)過(guò)程中,Scrapy 支持并發(fā)處理,通過(guò)使用異步網(wǎng)絡(luò)框架 Twisted,從而提高了爬蟲(chóng)的速度和效率。此外,Scrapy 還提供了許多可定制和擴(kuò)展的機(jī)制,如中間件、數(shù)據(jù)管道等,使得開(kāi)發(fā)者能夠根據(jù)自己的需求進(jìn)行靈活的配置和操作。

總結(jié)來(lái)說(shuō),Scrapy 的工作原理是:引擎從 Spider 獲取初始 URL,通過(guò)調(diào)度器將請(qǐng)求入隊(duì),下載器發(fā)送請(qǐng)求獲取響應(yīng),Spider 解析網(wǎng)頁(yè)提取數(shù)據(jù)并生成新的請(qǐng)求和數(shù)據(jù)項(xiàng),引擎將其傳遞給相應(yīng)組件進(jìn)行處理,最終實(shí)現(xiàn)數(shù)據(jù)的提取、處理和存儲(chǔ)。這個(gè)循環(huán)過(guò)程不斷重復(fù),直到所有的請(qǐng)求都被處理完畢或達(dá)到停止條件。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-580855.html

到了這里,關(guān)于【Python爬蟲(chóng)開(kāi)發(fā)基礎(chǔ)?】Scrapy架構(gòu)(組件介紹、架構(gòu)組成和工作原理)的文章就介紹完了。如果您還想了解更多內(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】Day45:python網(wǎng)絡(luò)爬蟲(chóng)開(kāi)發(fā)_ Scrapy 爬蟲(chóng)框架

    目錄 1 Scrapy 的簡(jiǎn)介 2 Scrapy選擇器 3 快速創(chuàng)建Scrapy 爬蟲(chóng) 4 下載器與爬蟲(chóng)中間件

    2024年02月11日
    瀏覽(31)
  • 爬蟲(chóng):Scrapy熱門(mén)爬蟲(chóng)框架介紹

    結(jié)合自身經(jīng)驗(yàn)和內(nèi)部資料總結(jié)的Python教程,每天3-5章,最短1個(gè)月就能全方位的完成Python的學(xué)習(xí)并進(jìn)行實(shí)戰(zhàn)開(kāi)發(fā),學(xué)完了定能成為大佬!加油吧!卷起來(lái)! 全部文章請(qǐng)?jiān)L問(wèn)專(zhuān)欄:《Python全棧教程(0基礎(chǔ))》 再推薦一下最近熱更的:《大廠測(cè)試高頻面試題詳解》 該專(zhuān)欄對(duì)近年

    2024年02月13日
    瀏覽(23)
  • 爬蟲(chóng)(四):Scrapy熱門(mén)爬蟲(chóng)框架介紹

    結(jié)合自身經(jīng)驗(yàn)和內(nèi)部資料總結(jié)的Python教程,每天3-5章,最短1個(gè)月就能全方位的完成Python的學(xué)習(xí)并進(jìn)行實(shí)戰(zhàn)開(kāi)發(fā),學(xué)完了定能成為大佬!加油吧!卷起來(lái)! 全部文章請(qǐng)?jiān)L問(wèn)專(zhuān)欄:《Python全棧教程(0基礎(chǔ))》 再推薦一下最近熱更的:《大廠測(cè)試高頻面試題詳解》 該專(zhuān)欄對(duì)近年

    2024年02月11日
    瀏覽(21)
  • 《零基礎(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)
  • pycharm爬蟲(chóng)模塊(scrapy)基礎(chǔ)使用

    pycharm爬蟲(chóng)模塊(scrapy)基礎(chǔ)使用

    今天學(xué)了個(gè)爬蟲(chóng)。在此記錄 目錄 一.通過(guò)scrapy在命令行創(chuàng)建爬蟲(chóng)項(xiàng)目 二.判斷數(shù)據(jù)為靜態(tài)還是動(dòng)態(tài) 三.pycharm中的設(shè)置 三:爬蟲(chóng)主體 四.pipelines配置(保存數(shù)據(jù)的) 五.最終結(jié)果 1.首先需要在cmd中進(jìn)入到python文件對(duì)應(yīng)的文件夾目錄下 2.下載scrapcy模塊 (如果是在conda環(huán)境下的話(huà)直接

    2024年04月22日
    瀏覽(22)
  • Python 爬蟲(chóng)—scrapy

    scrapy用于從網(wǎng)站中提取所需數(shù)據(jù)的開(kāi)源協(xié)作框架。以一種快速、簡(jiǎn)單但可擴(kuò)展的方式。 該爬蟲(chóng)框架適合于那種靜態(tài)頁(yè)面, js 加載的話(huà),如果你無(wú)法模擬它的 API 請(qǐng)求,可能就需要使用 selenium 這種使用無(wú)頭瀏覽器的方式來(lái)完成你的需求了 運(yùn)行 代碼中通過(guò) main 方式運(yùn)行調(diào)試 簡(jiǎn)

    2024年02月10日
    瀏覽(19)
  • Python爬蟲(chóng)——scrapy_工作原理

    Python爬蟲(chóng)——scrapy_工作原理

    引擎向spiders要url 引擎把將要爬取的url給調(diào)度器 調(diào)度器會(huì)將url生成的請(qǐng)求對(duì)象放入到指定的隊(duì)列中 從隊(duì)列中出隊(duì)一個(gè)請(qǐng)求 引擎將請(qǐng)求交給下載器進(jìn)行處理 下載器發(fā)送請(qǐng)求獲取互聯(lián)網(wǎng)數(shù)據(jù) 下載器將數(shù)據(jù)返回給引擎 引擎將數(shù)據(jù)再次給到spiders spiders通過(guò)xpath解析該數(shù)據(jù),得到數(shù)據(jù)

    2024年02月12日
    瀏覽(24)
  • Python爬蟲(chóng)---scrapy shell 調(diào)試

    Python爬蟲(chóng)---scrapy shell 調(diào)試

    Scrapy shell 是Scrapy提供的一個(gè)交互式shell工具,它可以幫助我們進(jìn)行爬蟲(chóng)的開(kāi)發(fā)和調(diào)試。可以使用它來(lái)測(cè)試xpath或css表達(dá)式,查看它們是如何工作的,以及它們從你試圖抓取的網(wǎng)頁(yè)中提取的數(shù)據(jù)。它允許你在編寫(xiě)spider時(shí)交互地測(cè)試表達(dá)式,而無(wú)需運(yùn)行spider來(lái)測(cè)試每個(gè)更改。 使用

    2024年01月16日
    瀏覽(20)
  • 【python爬蟲(chóng)】14.Scrapy框架講解

    【python爬蟲(chóng)】14.Scrapy框架講解

    前兩關(guān),我們學(xué)習(xí)了能提升爬蟲(chóng)速度的進(jìn)階知識(shí)——協(xié)程,并且通過(guò)項(xiàng)目實(shí)操,將協(xié)程運(yùn)用于抓取薄荷網(wǎng)的食物數(shù)據(jù)。 可能你在體驗(yàn)開(kāi)發(fā)一個(gè)爬蟲(chóng)項(xiàng)目的完整流程時(shí),會(huì)有這樣的感覺(jué):原來(lái)要完成一個(gè)完整的爬蟲(chóng)程序需要做這么多瑣碎的工作。 比如,要導(dǎo)入不同功能的模塊

    2024年02月09日
    瀏覽(18)
  • 網(wǎng)絡(luò)爬蟲(chóng)(Python:Selenium、Scrapy框架;爬蟲(chóng)與反爬蟲(chóng)筆記)

    網(wǎng)絡(luò)爬蟲(chóng)(Python:Selenium、Scrapy框架;爬蟲(chóng)與反爬蟲(chóng)筆記)

    Selenium是一個(gè)模擬瀏覽器瀏覽網(wǎng)頁(yè)的工具,主要用于測(cè)試網(wǎng)站的自動(dòng)化測(cè)試工具。 Selenium需要安裝瀏覽器驅(qū)動(dòng),才能調(diào)用瀏覽器進(jìn)行自動(dòng)爬取或自動(dòng)化測(cè)試,常見(jiàn)的包括Chrome、Firefox、IE、PhantomJS等瀏覽器。 注意:驅(qū)動(dòng)下載解壓后,置于Python的安裝目錄下;然后將Python的安裝目

    2024年01月18日
    瀏覽(49)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包