Scrapy 爬蟲框架

1 Scrapy 爬蟲框架介紹

Scrapy 安裝
win 平臺(tái):“以管理員身份運(yùn)行” cmd埂蕊,執(zhí)行 pip install scrapy
安裝后小測(cè):執(zhí)行 scrapy -h

Scrapy 爬蟲框架基本信息
Scrapy 是用 Python 實(shí)現(xiàn)的一個(gè)為了爬取網(wǎng)站數(shù)據(jù)、提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架忠烛。常應(yīng)用在包括數(shù)據(jù)挖掘,信息處理或存儲(chǔ)歷史數(shù)據(jù)等一系列的程序中母剥。

Scrapy 不是一個(gè)函數(shù)功能庫笙什,而是一個(gè)爬蟲框架。

什么是爬蟲框架?
a) 爬蟲框架是實(shí)現(xiàn)爬蟲功能的一個(gè)軟件結(jié)構(gòu)和功能組件集合定拟。
b) 爬蟲框架是一個(gè)半成品,能夠幫助用戶實(shí)現(xiàn)專業(yè)網(wǎng)絡(luò)爬蟲逗嫡。

2 Scrapy 爬蟲框架解析

在五個(gè)模塊之間青自,數(shù)據(jù)包括用戶提交的爬蟲請(qǐng)求以及從網(wǎng)絡(luò)上獲取的相關(guān)內(nèi)容在這些結(jié)構(gòu)之間進(jìn)行流動(dòng)形成數(shù)據(jù)流。Scrapy 框架包含三條主要的數(shù)據(jù)流路徑驱证。

  • 1 Engine 從 spider 處獲得爬取請(qǐng)求(Request)
  • 2 Engine 將爬取請(qǐng)求轉(zhuǎn)發(fā)給 scheduler延窜,用于調(diào)度
  • 3 Engine 從 Scheduler 處獲得下一個(gè)要爬取的請(qǐng)求
  • 4 Engine 將爬取請(qǐng)求通過中間件發(fā)送給 Downloader
  • 5 爬取網(wǎng)頁后,Downloader 形成響應(yīng)(Response)通過中間件發(fā)給 Engine
  • 6 Engine 將收到的響應(yīng)通過中間件發(fā)送給 Spider 處理
  • 7 Spider 處理響應(yīng)后產(chǎn)生爬取項(xiàng)(scraped Item)和新的爬取請(qǐng)求(Requests)給 Engine
    8 Engine 將爬取項(xiàng)發(fā)送給 Item Pipeline (框架出口)
    9 Engine 將爬取請(qǐng)求發(fā)送給 scheduler

數(shù)據(jù)流的出入口
Engine 控制各模塊數(shù)據(jù)流抹锄,不間斷從 Scheduler 處獲得爬取請(qǐng)求逆瑞,直至請(qǐng)求為空
框架入口:Spider的初始爬取請(qǐng)求
框架出口:Item Pipeline

“5+2” 結(jié)構(gòu):五個(gè)框架的主體部分(模塊),兩個(gè)中間件

  • Scrapy Engine (引擎):負(fù)責(zé)其它四個(gè)模塊中間的通訊伙单,信號(hào)获高、數(shù)據(jù)傳遞等。
  • Scheduler (調(diào)度器):它負(fù)責(zé)接受引擎發(fā)送過來的 Request 請(qǐng)求吻育,并按照一定的方式進(jìn)行整理排列念秧,入隊(duì),當(dāng)引擎需要時(shí)扫沼,交還給引擎。
  • Downloader (下載器):負(fù)責(zé)下載 Engine (引擎)發(fā)送的所有 Requests 請(qǐng)求庄吼,并將其獲取到的 Responses 交還給 Engine (引擎)缎除,由引擎交給 Spider 來處理。
  • Spider (爬蟲):它負(fù)責(zé)處理所有 Responses总寻,從中分析提取數(shù)據(jù)器罐,獲取 Item 字段需要的數(shù)據(jù),并將需要跟進(jìn)的 URL 提交給引擎渐行,再次進(jìn)入 Scheduler (調(diào)度器)轰坊。
  • Item Pipeline (管道):它負(fù)責(zé)處理 Spider 中獲取到的 Item铸董,并進(jìn)行后期處理(詳細(xì)分析、過濾肴沫、存儲(chǔ)等)的地方粟害。
  • Downloader Middlewares (下載中間件):你可以當(dāng)作是一個(gè)可以自定義擴(kuò)展下載功能的組件。
    目的:實(shí)施 Engine颤芬、scheduler 和 Downloader 之間進(jìn)行用戶可配置的控制
    功能:修改悲幅、丟棄、新增請(qǐng)求或響應(yīng)
    用戶可以編寫配置代碼
  • Spider Middlewares (Spider 中間件):你可以理解為是一個(gè)可以自定擴(kuò)展和操作引擎和 Spider 中間通信的功能組件(比如進(jìn)入 Spider 的 Response 和從 Spider 出去的 Requests)
    目的:對(duì)請(qǐng)求和爬取項(xiàng)的再處理
    功能:修改站蝠、丟棄汰具、新增請(qǐng)求或爬取項(xiàng)
    用戶可以編寫配置代碼

從上述介紹, 我們可以看到框架中的五個(gè)模塊形成了既定的功能, 那么我們重點(diǎn)編寫的是 Spider 模塊和 Item Pipelines 模塊, 用戶為了去操作其中的數(shù)據(jù)流,對(duì)數(shù)據(jù)流進(jìn)行一定的控制, 可以通過兩個(gè)中間件對(duì)其中的 Request、Response 和 Item 做一定的操作菱魔。
Scrapy = Scrach + Python

3 Requests 庫和 Scrapy 爬蟲的比較

相同點(diǎn)∶
a) 兩者都可以進(jìn)行頁面請(qǐng)求和爬取留荔,Python爬蟲的兩個(gè)重要技術(shù)路線
b) 兩者可用性都好,文檔豐富澜倦,入門簡(jiǎn)單
c) 兩者都沒有處理js聚蝶、提交表單、應(yīng)對(duì)驗(yàn)證碼等功能(可擴(kuò)展)

選用哪個(gè)技術(shù)路線開發(fā)爬蟲呢?

  • 非常小的需求肥隆,requests 庫
  • 不太小的需求既荚,Scrapy 框架
  • 定制程度很高的需求(不考慮規(guī)模),自搭框架栋艳,requests > Scrapy

4 Scrapy 爬蟲的常用命令

Scrapy 命令行
Scrapy 是為持續(xù)運(yùn)行設(shè)計(jì)的專業(yè)爬蟲框架恰聘,提供操作的 Scrapy 命令行。win 下吸占,啟動(dòng) cmd 控制臺(tái)

  • 為什么 Scrapy 采用命令行創(chuàng)建和運(yùn)行爬蟲?
    命令行(不是圖形界面)更容易自動(dòng)化晴叨,適合腳本控制。本質(zhì)上矾屯,Scrapy 是給程序員用的兼蕊,功能(而不是界面)更重要

Scrapy 常用命令

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市件蚕,隨后出現(xiàn)的幾起案子孙技,更是在濱河造成了極大的恐慌,老刑警劉巖排作,帶你破解...
    沈念sama閱讀 212,029評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件牵啦,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡妄痪,警方通過查閱死者的電腦和手機(jī)哈雏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人裳瘪,你說我怎么就攤上這事土浸。” “怎么了彭羹?”我有些...
    開封第一講書人閱讀 157,570評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵黄伊,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我皆怕,道長(zhǎng)毅舆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,535評(píng)論 1 284
  • 正文 為了忘掉前任愈腾,我火速辦了婚禮憋活,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘虱黄。我一直安慰自己悦即,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,650評(píng)論 6 386
  • 文/花漫 我一把揭開白布橱乱。 她就那樣靜靜地躺著辜梳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪泳叠。 梳的紋絲不亂的頭發(fā)上作瞄,一...
    開封第一講書人閱讀 49,850評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音危纫,去河邊找鬼宗挥。 笑死,一個(gè)胖子當(dāng)著我的面吹牛种蝶,可吹牛的內(nèi)容都是我干的契耿。 我是一名探鬼主播,決...
    沈念sama閱讀 39,006評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼螃征,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼搪桂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起盯滚,我...
    開封第一講書人閱讀 37,747評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤踢械,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后魄藕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體内列,經(jīng)...
    沈念sama閱讀 44,207評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,536評(píng)論 2 327
  • 正文 我和宋清朗相戀三年泼疑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了德绿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,683評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡退渗,死狀恐怖移稳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情会油,我是刑警寧澤个粱,帶...
    沈念sama閱讀 34,342評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站翻翩,受9級(jí)特大地震影響都许,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜嫂冻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,964評(píng)論 3 315
  • 文/蒙蒙 一胶征、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧桨仿,春花似錦睛低、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至吹零,卻和暖如春罩抗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背灿椅。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工套蒂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人阱扬。 一個(gè)月前我還...
    沈念sama閱讀 46,401評(píng)論 2 360
  • 正文 我出身青樓泣懊,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親麻惶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子馍刮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,566評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • 放上官方文檔地址:http://doc.scrapy.org/en/latest scrapy 框架 Scrapy...
    肆憚閱讀 341評(píng)論 0 1
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月,有人笑有人哭窃蹋,有人歡樂有人憂愁卡啰,有人驚喜有人失落,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,529評(píng)論 28 53
  • 首先介紹下自己的背景: 我11年左右入市到現(xiàn)在,也差不多有4年時(shí)間杀迹,看過一些關(guān)于股票投資的書籍亡脸,對(duì)于巴菲特等股神的...
    瞎投資閱讀 5,704評(píng)論 3 8
  • ![Flask](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAW...
    極客學(xué)院Wiki閱讀 7,240評(píng)論 0 3
  • 不知不覺易趣客已經(jīng)在路上走了快一年了浅碾,感覺也該讓更多朋友認(rèn)識(shí)知道易趣客大州,所以就謝了這篇簡(jiǎn)介,已做創(chuàng)業(yè)記事垂谢。 易趣客...
    Physher閱讀 3,410評(píng)論 1 2