1、scrapy engine(scrapy引擎)
scrapy引擎是用來控制整個系統的資料處理流程,並進行事務處理的觸發。更多的詳細內容可以看下面的資料處理流程。
2、scheduler(排程)
排程程式從scrapy引擎接受請求併排序列入佇列,並在scrapy引擎發出請求後返還給他們。
4、spiders(蜘蛛)
蜘蛛是有scrapy使用者自己定義用來解析網頁並抓取制定url返回的內容的類,每個蜘蛛都能處理乙個網域名稱或一組網域名稱。換句話說就是用來定義特定**的抓取和解析規則。
蜘蛛的整個抓取流程(週期)是這樣的:
首先獲取第乙個url的初始請求,當請求返回後調取乙個**函式。第乙個請求是通過呼叫start_requests()方法。該方法預設從start_urls中的url中生成請求,並執行解析來呼叫**函式。
在**函式中,你解析**的內容,同程使用的是xpath選擇器(但是你也可以使用beautifusoup, lxml或其他任何你喜歡的程式),並生成解析的資料項。
最後,從蜘蛛返回的專案通常會進駐到專案管道。
5、item pipeline(專案管道)
專案管道的主要責任是負責處理有蜘蛛從網頁中抽取的專案,他的主要任務是清晰、驗證和儲存資料。當頁面被蜘蛛解析後,將被傳送到專案管道,並經過幾 個特定的次序處理資料。每個專案管道的元件都是有乙個簡單的方法組成的python類。他們獲取了專案並執行他們的方法,同時他們還需要確定的是是否需要 在專案管道中繼續執行下一步或是直接丟棄掉不處理。
專案管道通常執行的過程有:
清洗html資料
驗證解析到的資料(檢查專案是否包含必要的字段)
檢查是否是重複資料(如果重複就刪除)
將解析到的資料儲存到資料庫中
7、spider middlewares(蜘蛛中介軟體)
蜘蛛中介軟體是介於scrapy引擎和蜘蛛之間的鉤子框架,主要工作是處理蜘蛛的響應輸入和請求輸出。它提供乙個自定義**的方式來拓展scrapy 的功能。蛛中介軟體是乙個掛接到scrapy的蜘蛛處理機制的框架,你可以插入自定義的**來處理傳送給蜘蛛的請求和返回蜘蛛獲取的響應內容和專案。
8、scheduler middlewares(排程中介軟體)
排程中介軟體是介於scrapy引擎和排程之間的中介軟體,主要工作是處從scrapy引擎傳送到排程的請求和響應。他提供了乙個自定義的**來拓展scrapy的功能。
三、資料處理流程
scrapy的整個資料處理流程有scrapy引擎進行控制,其主要的執行方式為:
引擎開啟乙個網域名稱,時蜘蛛處理這個網域名稱,並讓蜘蛛獲取第乙個爬取的url。
引擎從蜘蛛那獲取第乙個需要爬取的url,然後作為請求在排程中進行排程。
引擎從排程那獲取接下來進行爬取的頁面。
蜘蛛處理響應並返回爬取到的專案,然後給引擎傳送新的請求。
引擎將抓取到的專案專案管道,並向排程傳送請求。
四、驅動器
scrapy是由twisted寫的乙個受歡迎的python事件驅動網路框架,它使用的是非堵塞的非同步處理。如果要獲得更多關於非同步程式設計和twisted的資訊,請參考下面兩條鏈結。
Scrapy框架結構及工作原理
話不多說,先上圖1 首先,簡單了解一下scrapy框架中的各個元件 對於使用者來說,spider是最核心的元件,scrapy爬蟲開發是圍繞實現spider展開的。接下來,看一下在框架中的資料流,有下表所示的3種物件。request和response是http協議中的術語,即http請求和http響應...
基於Scrapy爬蟲框架的執行原理
scrapy是乙個非常強大的第三方庫,也是乙個提高爬蟲效率的框架,入門較難。框架內部包含模組可以描述為 5 2 模組,包含 spiders,item piplines engine scheduler 而engine和spiders,之間包含了兩個中間鍵模組,因此叫 5 2 模組。從spider經過...
scrapy爬蟲框架(一) scrapy框架簡介
開啟命令列輸入如下命令 pip install scrapy安裝完成後,python會自動將 scrapy命令新增到環境變數中去,這時我們就可以使用 scrapy命令來建立我們的第乙個 scrapy專案了。開啟命令列,輸入如下命令 scrapy startproject yourproject這裡的...