爬蟲scrapy框架總結

直接上圖(爬蟲架構圖)

① Scrapy Engine(引擎)

引擎負責控制數據流在系統(tǒng)中所有組件中流動酗失,并在相應動作發(fā)生時觸發(fā)事件蹭沛。 詳細內容查看下面的數據流(Data Flow)部分
② Scheduler(調度器)

調度器從引擎接受request并將他們入隊,以便之后引擎請求他們時提供給引擎

③ Downloader(下載器)

下載器負責獲取頁面數據并提供給引擎挂捅,而后提供給spider

④ Spiders(爬蟲文件)

Spider是Scrapy用戶編寫用于分析response并提取item(即獲取到的item)或額外跟進的URL的類枕面。 每 個spider負責處理一個特定(或一些)網站

⑤ Item Pipeline(管道)

Item Pipeline負責處理被spider提取出來的item励翼。典型的處理有清理、 驗證及持久化(例如存取到數 據庫中)

⑥ Downloader middlewares(下載器中間件)

下載器中間件是在引擎及下載器之間的特定鉤子(specific hook)雕凹,處理Downloader傳遞給引擎的 response殴俱。 其提供了一個簡便的機制,通過插入自定義代碼來擴展Scrapy功能

⑦ Spider middlewares(爬蟲中間件)

Spider中間件是在引擎及Spider之間的特定鉤子(specific hook)枚抵,處理spider的輸入(response)和輸出 (items及requests)线欲。 其提供了一個簡便的機制,通過插入自定義代碼來擴展Scrapy功能

構架流程如下

引擎打開一個網站(open a domain)汽摹,找到處理該網站的Spider并向該spider請求第一個要爬取的 URL(s)询筏。
引擎從Spider中獲取到第一個要爬取的URL并在調度器(Scheduler)以Request調度。
引擎向調度器請求下一個要爬取的URL竖慧。
調度器返回下一個要爬取的URL給引擎嫌套,引擎將URL通過下載中間件(請求(request)方向)轉發(fā)給下載 器(Downloader)。
一旦頁面下載完畢圾旨,下載器生成一個該頁面的Response踱讨,并將其通過下載中間件(返回(response)方 向)發(fā)送給引擎。
引擎從下載器中接收到Response并通過Spider中間件(輸入方向)發(fā)送給Spider處理砍的。
Spider處理Response并返回爬取到的Item及(跟進的)新的Request給引擎痹筛。
引擎將(Spider返回的)爬取到的Item給Item Pipeline,將(Spider返回的)Request給調度器。
(從第二步)重復直到調度器中沒有更多地request帚稠,引擎關閉該網站
簡單粗暴的說就是:
1.首先下載器下載request回執(zhí)的html等的response
2.然后下載器傳給爬蟲解析
3.接著爬蟲解析后交給調度器過濾谣旁,查重等等
4.最后交給管道,進行爬取數據的處理

我個人喜歡用通用爬蟲,所以下面是我對通用爬蟲的一些小結

通用爬蟲:為了全站爬取
如何創(chuàng)建爬蟲項目:

  1. scrapy startproject 項目名稱
  2. scrapy genspider -t crawl 爬蟲名稱 域

rules規(guī)則屬性的參數:是一個元祖,可以放多個Rule對象
創(chuàng)建Rule:

LinkExtractor:設定提取規(guī)則
callback:設置回調函數
follwer:是否跟進
LinkExtractor屬性的每個方法

allow:一般跟一個正則表達式,表示提取的url
deny:同樣是跟一個正則表達式,符合正則表達式的連接,我們不提取(優(yōu)先級比allow高)
allowed_domains:提取的連接,必須在我設置的域下
deny_domains:同樣是設置提取連接時,一定不能提取deny_domains設置的域下
restrict_xpaths:當提取連接的時候,我們可以定位到某些標簽,提取標簽下,符合規(guī)則的標簽,遵循xpath語法
tags:可以指定要提取的哪些標簽
attrs:可以指定提取標簽的屬性
restrict_css:當提取連接的時候,我們可以定位到某些標簽,提取標簽下,符合規(guī)則的標簽,遵循css語法
strip:去掉空格
callback='':回調
process_links:設置一個函數,根據正則獲取url,可以在回調函數中獲取到
process_request:設置一個函數,可以在回調方法中攔截所有根據正則提取到的qequest對象

注意

  1. 設置回調的時候一定不能重寫parse方法
  2. 要獲取起始url的響應結果,必須重寫parse_start_url
  3. 在設置Rule對象的時候,如果沒有callback回調參數,默認表示跟進

什么情況下會用到通用爬蟲?
當我們提取數據的目標網站很有規(guī)律滋早,并且各個模塊很有規(guī)律榄审,我們可以使用通用爬蟲

菜鳥總結,大佬誤笑~~

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市杆麸,隨后出現(xiàn)的幾起案子搁进,更是在濱河造成了極大的恐慌,老刑警劉巖昔头,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饼问,死亡現(xiàn)場離奇詭異,居然都是意外死亡揭斧,警方通過查閱死者的電腦和手機莱革,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來讹开,“玉大人驮吱,你說我怎么就攤上這事∠舴停” “怎么了左冬?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長纸型。 經常有香客問我拇砰,道長,這世上最難降的妖魔是什么狰腌? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任除破,我火速辦了婚禮,結果婚禮上琼腔,老公的妹妹穿的比我還像新娘瑰枫。我一直安慰自己,他們只是感情好丹莲,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布光坝。 她就那樣靜靜地躺著,像睡著了一般甥材。 火紅的嫁衣襯著肌膚如雪盯另。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天洲赵,我揣著相機與錄音鸳惯,去河邊找鬼商蕴。 笑死,一個胖子當著我的面吹牛芝发,可吹牛的內容都是我干的绪商。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼辅鲸,長吁一口氣:“原來是場噩夢啊……” “哼格郁!你這毒婦竟也來了?” 一聲冷哼從身側響起瓢湃,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎赫蛇,沒想到半個月后绵患,有當地人在樹林里發(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡悟耘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年落蝙,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片暂幼。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡筏勒,死狀恐怖,靈堂內的尸體忽然破棺而出旺嬉,到底是詐尸還是另有隱情管行,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布邪媳,位于F島的核電站捐顷,受9級特大地震影響,放射性物質發(fā)生泄漏雨效。R本人自食惡果不足惜迅涮,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望徽龟。 院中可真熱鬧叮姑,春花似錦、人聲如沸据悔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽极颓。三九已至旷祸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間讼昆,已是汗流浹背托享。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工骚烧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人闰围。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓赃绊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親羡榴。 傳聞我的和親對象是個殘疾皇子碧查,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內容