您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關scrapy和python的關系是什么,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
Scrapy是Python開發的一個快速、高層次的web數據抓取框架,用于抓取web站點并從頁面中提取結構化的數據。Scrapy用途廣泛,可以用于數據挖掘和監測。
Scrapy吸引人的地方在于它是一個框架,任何人都可以根據需求方便的修改。它也提供了多種類型爬蟲的基類,如BaseSpider、sitemap爬蟲等。
Scrapy算得上是Python世界中最常用的爬蟲框架了,同時它也是我掌握的幾種流行語言中最好的爬蟲框架,沒有之一!我認為它也是最難學習的框架,同樣沒有之一。很多初學Scarpy的經常向我抱怨完全不清楚Scrapy該怎樣入手,即使看的是中文的文檔,也感到很難理解。我當初接觸Scrapy時也有這樣的感覺。之所以感到Scrapy難學,究其原因,是其官方文檔實在太過凌亂,又缺少實用的代碼例子,讓人看得云里霧里,不知其所已然。雖然其文檔不良,但卻沒有遮擋住它的光輝,它依然是Python世界中目前最好用的爬蟲框架。其架構的思路、蜘蛛執行的效能,還有可擴展的能力都非常出眾,再配以Python語言的簡潔輕巧,使得爬蟲的開發事半功倍。
Scrapy的優點:
(1)提供了內置的HTTP緩存,以加速本地開發。
(2)提供了自動節演調節機制,而且具有遵守robots.txt的設置的能力。
(3)可以定義爬行深度的限制,以避免爬蟲進入死循環鏈接。
(4)會自動保留會話。
(5)執行自動HTTP基本認證。不需要明確保存狀態。
(6)可以自動填寫登錄表單。
(7)Scrapy有一個內置的中間件,可以自動設置請求中的引用(referrer)頭。
(8)支持通過3xx響應重定向,也可以通過HTML元刷新。
(9)避免被網站使用的meta重定向困住,以檢測沒有JS支持的頁面。
(10)默認使用CSS選擇器或XPath編寫解析器。
(11)可以通過Splash或任何其他技術(如Selenium)呈現JavaScript頁面。
(12)擁有強大的社區支持和豐富的插件和擴展來擴展其功能。
(13)提供了通用的蜘蛛來抓取常見的格式:站點地圖、CSV和XML。
(14)內置支持以多種格式(JSON、CSV、XML、JSON-lines)導出收集的數據并將其存在多個后端(FTP、S3、本地文件系統)中。
Scrapy框架原理
Scrapy Engine(引擎):負責Spider、ItemPipeline、Downloader、Scheduler中間的通訊,信號、數據傳遞等。
Scheduler(調度器):負責接收引擎發送過來的Request請求,并按照一定的方式進行整理排列,入隊,當引擎需要時,交還給引擎。
Downloader(下載器):負責下載Scrapy Engine(引擎)發送的所有Requests請求,并將其獲取到的Responses交還給Scrapy Engine(引擎),由引擎交給Spider來處理,
Spider(爬蟲):負責處理所有Responses,從中分析提取數據,獲取Item字段需要的數據,并將需要跟進的URL提交給引擎,再次進入Scheduler(調度器),
Item Pipeline(管道):負責處理Spider中獲取到的Item,并進行進行后期處理(詳細分析、過濾、存儲等)的地方.
Downloader Middlewares(下載中間件):你可以當作是一個可以自定義擴展下載功能的組件。
Spider Middlewares(Spider中間件):你可以理解為是一個可以自定擴展和操作引擎和Spider中間通信的功能組件(比如進入Spider的Responses;和從Spider出去的Requests)
Scrapy各個組件介紹
·Scrapy Engine:
引擎負責控制數據流在系統中所有組件中流動,并在相應動作發生時觸發事件。它也是程序的入口,可以通過scrapy指令方式在命令行啟動,或普通編程方式實例化后調用start方法啟動。
·調度器(Scheduler)
調度器從引擎接收爬取請求(Request)并將它們入隊,以便之后引擎請求它們時提供給引擎。一般來說,我們并不需要直接對調度器進行編程,它是由Scrapy主進程進行自動控制的。
·下載器(Down-loader)
下載器負責獲取頁面數據并提供給引擎,而后將網站的響應結果對象提供給蜘蛛(Spider)。具體點說,下載器負責處理產生最終發出的請求對象 Request 并將返回的響應生成 Response對象傳遞給蜘蛛。
·蜘蛛——Spiders
Spider是用戶編寫用于分析響應(Response)結果并從中提取Item(即獲取的Item)或額外跟進的URL的類。每個Spider負責處理一個特定(或一些)網站。
·數據管道——Item Pipeline
Item Pipeline 負責處理被 Spider 提取出來的 Item。 典型的處理有清理、驗證及持久化(例如,存取到數據庫中)。
·下載器中間件(Downloader middle-wares)
下載器中間件是在引擎及下載器之間的特定鉤子(specific hook),處理Downloader傳遞給引擎的Response。其提供了一個簡便的機制,通過插入自定義代碼來擴展Scrapy的功能。
·Spider中間件(Spider middle-wares)
Spider 中間件是在引擎及 Spider 之間的特定鉤子(specific hook),處理 Spider 的輸入(Response)和輸出(Items及Requests)。其提供了一個簡便的機制,通過插入自定義代碼來擴展Scrapy的功能。
從Scrapy的系統架構可見,它將整個爬網過程進行了非常具體的細分,并接管了絕大多數復雜的工作,例如,產生請求和響應對象、控制爬蟲的并發等。
上述就是小編為大家分享的scrapy和python的關系是什么了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。