閱讀本文的前提是你已經對scrapy有了基本的認識,或是已經使用scrapy寫過資料抓取專案。
scrapy框架由多個元件組合而成,要採集的資料經過網路響應後返回流過各個元件,經過一些處理(如格式校驗,過濾去重,異常資料拋棄),最終儲存到指定的檔案或資料庫中。
下面是scrapy data flow 圖,大家應該不陌生吧。
scrapy的資料流由執行引擎控制,各個元件的執行也是有執行引擎排程驅動執行的。
(1)第1步,確定好我們要採集的**後,我們會在start_urls或者start_requests方法中構造最初的資料抓取鏈結。執行引擎engine通過讀取spiders模組的start_urls或start_requests方法的初始鏈結構造成request物件(網路請求物件)。
(2)第2步,request物件被引擎加入到scheduler排程器的排程佇列中,等待被排程。
(4)第6步,引擎獲取**的響應後,交給spiders模組的**函式去解析資料。第7步,然後引擎獲取解析後的資料。第8步,引擎將資料交給item pipelines模組處理資料,常見的處理有驗證資料格式是否符合要求,資料是否重複,儲存資料等。
以上。
最後,我們在閱讀框架原始碼的時候也要注意經常去回顧資料流的流向,有助於加深對scrapy的理解。
jQuery原始碼解讀一
前言 我為什麼要看這個原始碼,很簡單,尋找我自己寫的js框架與jquery之間的差異,取長補短,最終目標是提高js程式設計的乙個眼界,看看別人是怎麼想的,因為自己乙個人的想法往往是片面的,也為了能讓自己的主觀漸漸接近客觀事實。雖然jquery框架能直接拿來用,但是對於偏愛研究的人來說,還是喜歡寫原生...
hadoop原始碼解讀一
開啟已經編譯的hadoop資料夾,bin 看來像hadoop下的各種服務和元件,有cotainer,hdfs,mapred,yarn sbin hadoop各項服務的啟動指令碼,配置指令碼 反正裡面全是指令碼 設定各方面的都有 etc 各項的配置檔案,只要可以配置的都在裡面,包括dfs配置,排程器配...
HashMap原始碼解讀(一)
在我們面試過程中,經常會遇到要求說hashmap的底層實現,在jdk原始碼中,oracle公司給出了我們hashmap的原始碼,通過閱讀hashmap的原始碼,我們可以很清楚的知道hashmap是怎麼實現的。下面我們開始閱讀hashmap的原始碼吧。public class hashmap exte...