《Learning Scrapy》(中文版)第6章 Scrapinghub部署


序言
第1章 Scrapy介紹
第2章 理解HTML和XPath
第3章 爬蟲基礎(chǔ)
第4章 從Scrapy到移動(dòng)應(yīng)用
第5章 快速構(gòu)建爬蟲
第6章 Scrapinghub部署
第7章 配置和管理
第8章 Scrapy編程
第9章 使用Pipeline
第10章 理解Scrapy的性能
第11章(完) Scrapyd分布式抓取和實(shí)時(shí)分析


前面幾章中,我們學(xué)習(xí)了如何編寫爬蟲。編寫好爬蟲之后,我們有兩個(gè)選擇。如果是做單次抓取,讓爬蟲在開發(fā)機(jī)上運(yùn)行一段時(shí)間就行了。或者,我們往往需要周期性的進(jìn)行抓取。我們可以用Amazon、RackSpace等服務(wù)商的云主機(jī),但這需要一些設(shè)置、配置和維護(hù)。這時(shí)候就需要Scrapinghub了。

Scrapinghub是Scrapy高級(jí)開發(fā)者托管在Amazon上面的云架構(gòu)。這是一個(gè)付費(fèi)服務(wù),但提供免費(fèi)使用。如果想短時(shí)間內(nèi)讓爬蟲運(yùn)行在專業(yè)、有維護(hù)的平臺(tái)上,本章內(nèi)容很適合你。

注冊(cè)、登錄、創(chuàng)建項(xiàng)目

第一步是在http://scrapinghub.com/注冊(cè)一個(gè)賬戶,只需電子郵件地址和密碼。點(diǎn)擊確認(rèn)郵件的鏈接之后,就登錄了。首先看到的是工作臺(tái),目前還沒有任何項(xiàng)目,點(diǎn)擊+Service按鈕(1)創(chuàng)建一個(gè):

將項(xiàng)目命名為properties(2),點(diǎn)擊Create按鈕(3)。然后點(diǎn)擊鏈接new(4)打開這個(gè)項(xiàng)目。

項(xiàng)目的工作臺(tái)是最重要的界面。左側(cè)欄中可以看到一些標(biāo)簽。Jobs和Spiders提供運(yùn)行和爬蟲的信息。Periodic Jobs可以制定周期抓取。其它四項(xiàng),現(xiàn)在對(duì)我們不重要。

進(jìn)入Settings(1)。和許多網(wǎng)站的設(shè)置不同,Scrapinghub提供許多非常有用的設(shè)置項(xiàng)。

現(xiàn)在,先關(guān)注下Scrapy Deploy(2)。

部署爬蟲并制定計(jì)劃

我們從開發(fā)機(jī)直接部署。將Scrapy Deploy頁上的url復(fù)制到我們項(xiàng)目的scrapy.cfg中,替換原有的[depoly]部分。不必設(shè)置密碼。我們用第4章中的properties爬蟲作例子。我們使用這個(gè)爬蟲的原因是,目標(biāo)數(shù)據(jù)可以從網(wǎng)頁訪問,訪問的方式和第4章中一樣。開始之前,我們先恢復(fù)原有的settings.py,去除和Appery.io pipeline有關(guān)的內(nèi)容:

提示:代碼位于目錄ch06。這個(gè)例子在ch06/properties中。

$ pwd
/root/book/ch06/properties
$ ls
properties  scrapy.cfg
$ cat scrapy.cfg
...
[settings]
default = properties.settings
# Project: properties
[deploy]
url = http://dash.scrapinghub.com/api/scrapyd/
username = 180128bc7a0.....50e8290dbf3b0
password = 
project = 28814

為了部署爬蟲,我們使用Scrapinghub提供的shub工具,可以用pip install shub安裝。我們的開發(fā)機(jī)中已經(jīng)有了。我們shub login登錄Scrapinghub,如下所示:

$ shub login
Insert your Scrapinghub API key : 180128bc7a0.....50e8290dbf3b0
Success.

我們已經(jīng)在scrapy.cfg文件中復(fù)制了API key,我們還可以點(diǎn)擊Scrapinghub右上角的用戶名找到API key。弄好API key之后,就可以使用shub deploy部署爬蟲了:

$ shub deploy
Packing version 1449092838
Deploying to project "28814"in {"status": "ok", "project": 28814,
"version":"1449092838", "spiders": 1}
Run your spiders at: https://dash.scrapinghub.com/p/28814/

Scrapy打包了所有爬蟲文件,并上傳到了Scrapinghub。我們可以看到兩個(gè)新目錄和一個(gè)文件,可以選擇刪除或不刪除。

$ ls
build project.egg-info properties scrapy.cfgsetup.py
$ rm -rf build project.egg-info setup.py

現(xiàn)在,如果我們?cè)赟crapinghub點(diǎn)擊Spiders欄(1),我們可以看到上傳的tomobile爬蟲:

如果我們點(diǎn)擊它(2),可以轉(zhuǎn)到爬蟲的工作臺(tái)。里面的信息很多,但我們要做的是點(diǎn)擊右上角的Schedule按鈕(3),在彈出的界面中再點(diǎn)擊Schedule(4)。

幾秒鐘之后,Running Jobs欄會(huì)出現(xiàn)新的一行,再過一會(huì)兒,Requests和Items的數(shù)量開始增加。

提示:你或許不會(huì)限制抓取速度。Scrapinghub使用算法估算在不被封的情況下,你每秒的最大請(qǐng)求數(shù)。

運(yùn)行一段時(shí)間后,勾選這個(gè)任務(wù)(6),點(diǎn)擊Stop(7)。

幾秒之后,可以在Completed Jobs看到抓取結(jié)束。要查看抓取文件,可以點(diǎn)擊文件數(shù)(8)。

訪問文件
來到任務(wù)的工作臺(tái)。這里,可以查看文件(9),確認(rèn)它們是否合格。我們還可以用上面的條件過濾結(jié)果。當(dāng)我們向下翻動(dòng)時(shí),更多的文件被加載進(jìn)來。

如果有錯(cuò)的話,我們可以在Items的上方找到有用的關(guān)于Requests和Log的信息(10)。用上方的面包屑路徑(11)可以返回爬蟲或項(xiàng)目主頁。當(dāng)然,可以點(diǎn)擊左上的Items按鈕(12)下載文件,選擇合適的選項(xiàng)(13),保存格式可以是CSV、JSON和JSON Lines。

另一種訪問文件的方法是通過Scrapinghub的Items API。我們要做的是查看任務(wù)頁或文件頁的URL。應(yīng)該看起來和下面很像:
https://dash.scrapinghub.com/p/28814/job/1/1/

在這個(gè)URL中,28814是項(xiàng)目編號(hào)(scrapy.cfg中也設(shè)置了它),第一個(gè)1是爬蟲“tomobile”的ID編號(hào),第二個(gè)1是任務(wù)編號(hào)。按順序使用這三個(gè)數(shù)字,我們可以在控制臺(tái)中用curl取回文件,請(qǐng)求發(fā)送到https://storage.scrapinghub.com/items/<project id>/<spider id>/<job id>,并使用用戶名/API key驗(yàn)證,如下所示:

$ curl -u 180128bc7a0.....50e8290dbf3b0: https://storage.scrapinghub.com/items/28814/1/1
{"_type":"PropertiesItem","description":["same\r\nsmoking\r\nr...
{"_type":"PropertiesItem","description":["british bit keep eve...
...

如果詢問密碼的話,可以不填。用程序取回文件的話,可以使用Scrapinghub當(dāng)做數(shù)據(jù)存儲(chǔ)后端。存儲(chǔ)的時(shí)間取決于訂閱套餐的時(shí)間(免費(fèi)試用是七天)。

制定周期抓取

只需要點(diǎn)擊Periodic Jobs欄(1),點(diǎn)擊Add(2),設(shè)定爬蟲(3),調(diào)整抓取頻率(4),最后點(diǎn)擊Save(5)。

總結(jié)
本章中,我們首次接觸了將Scrapy項(xiàng)目部署到Scrapinghub。定時(shí)抓取數(shù)千條信息,并可以用API方便瀏覽和提取。后面的章節(jié)中,我們繼續(xù)學(xué)習(xí)設(shè)置一個(gè)類似Scrapinghub的小型服務(wù)器。下一章先學(xué)習(xí)配置和管理。


序言
第1章 Scrapy介紹
第2章 理解HTML和XPath
第3章 爬蟲基礎(chǔ)
第4章 從Scrapy到移動(dòng)應(yīng)用
第5章 快速構(gòu)建爬蟲
第6章 Scrapinghub部署
第7章 配置和管理
第8章 Scrapy編程
第9章 使用Pipeline
第10章 理解Scrapy的性能
第11章(完) Scrapyd分布式抓取和實(shí)時(shí)分析


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容