scrapy一共有五大核心組件,分別爲引擎、下載器、調度器、spider(爬蟲文件)、管道。服務器
爬蟲文件的做用:數據結構
a. 解析數據框架
b. 發請求scrapy
調度器:ide
a. 隊列url
隊列是一種數據結構,擁有先進先出的特性。中間件
b. 過濾器對象
過濾器適用於過濾的,過濾重複的請求。blog
調度器是用來調度請求對象的。隊列
引擎:
全部的實例化的過程都是由引擎來作的,根據那到的數據流進行判斷實例化的時間。
處理流數據
觸發事物
scrapy五大核心組件之間的工做流程:
scrapy框架得的五大組件之間的工做流程上圖所示:
當咱們執行爬蟲文件的時候,這五大組件就已經開始工做了 。其中,
1 首先,咱們最原始的起始url是在咱們爬蟲文件中的,一般狀況系,起始的url只有一個,當咱們的爬蟲文件執行的時候,首先對起始url發送請求,將起始url封裝成了請求對象,將請求對象傳遞給了引擎,引擎就收到了爬蟲文件給它發送的封裝了起始URL的請求對象。咱們在爬蟲文件中發送的請求並無拿到響應(沒有立刻拿到響應),只有請求發送到服務器端,服務器端返回響應,才能拿到響應。
2 引擎拿到這個請求對象之後,又將請求對象發送給了調度器,隊列接受到的請求都放到了隊列當中,隊列中可能存在多個請求對象,而後經過過濾器,去掉重複的請求
3 調度器將過濾後的請求對象發送給了引擎,
4 引擎將拿到的請求對象給了下載器
5 下載器拿到請求後將請求拿到互聯網進行數據下載
6 互聯網將下載好的數據發送給下載器,此時下載好的數據是封裝在響應對象中的
7 下載器將響應對象發送給引擎,引擎接收到了響應對象,此時引擎中存儲了從互聯網中下載的數據。
8 最終,這個響應對象又由引擎給了spider(爬蟲文件),由parse方法中的response對象來接收,而後再parse方法中進行解析數據,此時可能解析到新的url,而後再次發請求;也可能解析到相關的數據,而後將數據進行封裝獲得item,
9 spider將item發送給引擎,
10 引擎將item發送給管道。
其中,在引擎和下載中間還有一個下載器中間件,spider和引擎中間有爬蟲中間件,
下載器中間件
能夠攔截請求和響應對象,請求和響應交互的時候必定會通過下載中間件,能夠處理請求和響應。
爬蟲中間件
攔截請求和響應,對請求和響應進行處理。
0