創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供鳳城網(wǎng)站建設(shè)、鳳城做網(wǎng)站、鳳城網(wǎng)站設(shè)計(jì)、鳳城網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、鳳城企業(yè)網(wǎng)站模板建站服務(wù),十多年鳳城做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)scrapy和python的關(guān)系是什么,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
Scrapy是Python開(kāi)發(fā)的一個(gè)快速、高層次的web數(shù)據(jù)抓取框架,用于抓取web站點(diǎn)并從頁(yè)面中提取結(jié)構(gòu)化的數(shù)據(jù)。Scrapy用途廣泛,可以用于數(shù)據(jù)挖掘和監(jiān)測(cè)。
Scrapy吸引人的地方在于它是一個(gè)框架,任何人都可以根據(jù)需求方便的修改。它也提供了多種類型爬蟲的基類,如BaseSpider、sitemap爬蟲等。
Scrapy算得上是Python世界中最常用的爬蟲框架了,同時(shí)它也是我掌握的幾種流行語(yǔ)言中最好的爬蟲框架,沒(méi)有之一!我認(rèn)為它也是最難學(xué)習(xí)的框架,同樣沒(méi)有之一。很多初學(xué)Scarpy的經(jīng)常向我抱怨完全不清楚Scrapy該怎樣入手,即使看的是中文的文檔,也感到很難理解。我當(dāng)初接觸Scrapy時(shí)也有這樣的感覺(jué)。之所以感到Scrapy難學(xué),究其原因,是其官方文檔實(shí)在太過(guò)凌亂,又缺少實(shí)用的代碼例子,讓人看得云里霧里,不知其所已然。雖然其文檔不良,但卻沒(méi)有遮擋住它的光輝,它依然是Python世界中目前最好用的爬蟲框架。其架構(gòu)的思路、蜘蛛執(zhí)行的效能,還有可擴(kuò)展的能力都非常出眾,再配以Python語(yǔ)言的簡(jiǎn)潔輕巧,使得爬蟲的開(kāi)發(fā)事半功倍。
Scrapy的優(yōu)點(diǎn):
(1)提供了內(nèi)置的HTTP緩存,以加速本地開(kāi)發(fā)。
(2)提供了自動(dòng)節(jié)演調(diào)節(jié)機(jī)制,而且具有遵守robots.txt的設(shè)置的能力。
(3)可以定義爬行深度的限制,以避免爬蟲進(jìn)入死循環(huán)鏈接。
(4)會(huì)自動(dòng)保留會(huì)話。
(5)執(zhí)行自動(dòng)HTTP基本認(rèn)證。不需要明確保存狀態(tài)。
(6)可以自動(dòng)填寫登錄表單。
(7)Scrapy有一個(gè)內(nèi)置的中間件,可以自動(dòng)設(shè)置請(qǐng)求中的引用(referrer)頭。
(8)支持通過(guò)3xx響應(yīng)重定向,也可以通過(guò)HTML元刷新。
(9)避免被網(wǎng)站使用的meta重定向困住,以檢測(cè)沒(méi)有JS支持的頁(yè)面。
(10)默認(rèn)使用CSS選擇器或XPath編寫解析器。
(11)可以通過(guò)Splash或任何其他技術(shù)(如Selenium)呈現(xiàn)JavaScript頁(yè)面。
(12)擁有強(qiáng)大的社區(qū)支持和豐富的插件和擴(kuò)展來(lái)擴(kuò)展其功能。
(13)提供了通用的蜘蛛來(lái)抓取常見(jiàn)的格式:站點(diǎn)地圖、CSV和XML。
(14)內(nèi)置支持以多種格式(JSON、CSV、XML、JSON-lines)導(dǎo)出收集的數(shù)據(jù)并將其存在多個(gè)后端(FTP、S3、本地文件系統(tǒng))中。
Scrapy框架原理
Scrapy Engine(引擎):負(fù)責(zé)Spider、ItemPipeline、Downloader、Scheduler中間的通訊,信號(hào)、數(shù)據(jù)傳遞等。
Scheduler(調(diào)度器):負(fù)責(zé)接收引擎發(fā)送過(guò)來(lái)的Request請(qǐng)求,并按照一定的方式進(jìn)行整理排列,入隊(duì),當(dāng)引擎需要時(shí),交還給引擎。
Downloader(下載器):負(fù)責(zé)下載Scrapy Engine(引擎)發(fā)送的所有Requests請(qǐng)求,并將其獲取到的Responses交還給Scrapy Engine(引擎),由引擎交給Spider來(lái)處理,
Spider(爬蟲):負(fù)責(zé)處理所有Responses,從中分析提取數(shù)據(jù),獲取Item字段需要的數(shù)據(jù),并將需要跟進(jìn)的URL提交給引擎,再次進(jìn)入Scheduler(調(diào)度器),
Item Pipeline(管道):負(fù)責(zé)處理Spider中獲取到的Item,并進(jìn)行進(jìn)行后期處理(詳細(xì)分析、過(guò)濾、存儲(chǔ)等)的地方.
Downloader Middlewares(下載中間件):你可以當(dāng)作是一個(gè)可以自定義擴(kuò)展下載功能的組件。
Spider Middlewares(Spider中間件):你可以理解為是一個(gè)可以自定擴(kuò)展和操作引擎和Spider中間通信的功能組件(比如進(jìn)入Spider的Responses;和從Spider出去的Requests)
Scrapy各個(gè)組件介紹
·Scrapy Engine:
引擎負(fù)責(zé)控制數(shù)據(jù)流在系統(tǒng)中所有組件中流動(dòng),并在相應(yīng)動(dòng)作發(fā)生時(shí)觸發(fā)事件。它也是程序的入口,可以通過(guò)scrapy指令方式在命令行啟動(dòng),或普通編程方式實(shí)例化后調(diào)用start方法啟動(dòng)。
·調(diào)度器(Scheduler)
調(diào)度器從引擎接收爬取請(qǐng)求(Request)并將它們?nèi)腙?duì),以便之后引擎請(qǐng)求它們時(shí)提供給引擎。一般來(lái)說(shuō),我們并不需要直接對(duì)調(diào)度器進(jìn)行編程,它是由Scrapy主進(jìn)程進(jìn)行自動(dòng)控制的。
·下載器(Down-loader)
下載器負(fù)責(zé)獲取頁(yè)面數(shù)據(jù)并提供給引擎,而后將網(wǎng)站的響應(yīng)結(jié)果對(duì)象提供給蜘蛛(Spider)。具體點(diǎn)說(shuō),下載器負(fù)責(zé)處理產(chǎn)生最終發(fā)出的請(qǐng)求對(duì)象 Request 并將返回的響應(yīng)生成 Response對(duì)象傳遞給蜘蛛。
·蜘蛛——Spiders
Spider是用戶編寫用于分析響應(yīng)(Response)結(jié)果并從中提取Item(即獲取的Item)或額外跟進(jìn)的URL的類。每個(gè)Spider負(fù)責(zé)處理一個(gè)特定(或一些)網(wǎng)站。
·數(shù)據(jù)管道——Item Pipeline
Item Pipeline 負(fù)責(zé)處理被 Spider 提取出來(lái)的 Item。 典型的處理有清理、驗(yàn)證及持久化(例如,存取到數(shù)據(jù)庫(kù)中)。
·下載器中間件(Downloader middle-wares)
下載器中間件是在引擎及下載器之間的特定鉤子(specific hook),處理Downloader傳遞給引擎的Response。其提供了一個(gè)簡(jiǎn)便的機(jī)制,通過(guò)插入自定義代碼來(lái)擴(kuò)展Scrapy的功能。
·Spider中間件(Spider middle-wares)
Spider 中間件是在引擎及 Spider 之間的特定鉤子(specific hook),處理 Spider 的輸入(Response)和輸出(Items及Requests)。其提供了一個(gè)簡(jiǎn)便的機(jī)制,通過(guò)插入自定義代碼來(lái)擴(kuò)展Scrapy的功能。
從Scrapy的系統(tǒng)架構(gòu)可見(jiàn),它將整個(gè)爬網(wǎng)過(guò)程進(jìn)行了非常具體的細(xì)分,并接管了絕大多數(shù)復(fù)雜的工作,例如,產(chǎn)生請(qǐng)求和響應(yīng)對(duì)象、控制爬蟲的并發(fā)等。
上述就是小編為大家分享的scrapy和python的關(guān)系是什么了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。
本文名稱:scrapy和python的關(guān)系是什么-創(chuàng)新互聯(lián)
文章起源:http://jinyejixie.com/article44/deohee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、定制開(kāi)發(fā)、手機(jī)網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)、軟件開(kāi)發(fā)、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容