序言
第1章 Scrapy介紹
第2章 理解HTML和XPath
第3章 爬蟲基礎
第4章 從Scrapy到移動應用
第5章 快速構建爬蟲
第6章 Scrapinghub部署
第7章 配置和管理
第8章 Scrapy編程
第9章 使用Pipeline
第10章 理解Scrapy的性能
第11章(完) Scrapyd分布式抓取和實時分析
前面幾章中,我們學習了如何編寫爬蟲嚷节。編寫好爬蟲之后虎锚,我們有兩個選擇。如果是做單次抓取效斑,讓爬蟲在開發(fā)機上運行一段時間就行了柱徙。或者敌完,我們往往需要周期性的進行抓取羊初。我們可以用Amazon、RackSpace等服務商的云主機晦攒,但這需要一些設置得哆、配置和維護。這時候就需要Scrapinghub了贩据。
Scrapinghub是Scrapy高級開發(fā)者托管在Amazon上面的云架構闸餐。這是一個付費服務绎巨,但提供免費使用蠕啄。如果想短時間內讓爬蟲運行在專業(yè)戈锻、有維護的平臺上,本章內容很適合你哈街。
注冊拒迅、登錄、創(chuàng)建項目
第一步是在http://scrapinghub.com/注冊一個賬戶作箍,只需電子郵件地址和密碼前硫。點擊確認郵件的鏈接之后,就登錄了屹电。首先看到的是工作臺阶剑,目前還沒有任何項目牧愁,點擊+Service按鈕(1)創(chuàng)建一個:
將項目命名為properties(2)猪半,點擊Create按鈕(3)苍狰。然后點擊鏈接new(4)打開這個項目。
項目的工作臺是最重要的界面俐填。左側欄中可以看到一些標簽翔忽。Jobs和Spiders提供運行和爬蟲的信息盏檐。Periodic Jobs可以制定周期抓取胡野。其它四項,現在對我們不重要硫豆。
進入Settings(1)熊响。和許多網站的設置不同诗赌,Scrapinghub提供許多非常有用的設置項。
現在铭若,先關注下Scrapy Deploy(2)。
部署爬蟲并制定計劃
我們從開發(fā)機直接部署瞳腌。將Scrapy Deploy頁上的url復制到我們項目的scrapy.cfg中环鲤,替換原有的[depoly]部分。不必設置密碼吵冒。我們用第4章中的properties爬蟲作例子西剥。我們使用這個爬蟲的原因是,目標數據可以從網頁訪問揪阿,訪問的方式和第4章中一樣。開始之前南捂,我們先恢復原有的settings.py旧找,去除和Appery.io pipeline有關的內容:
提示:代碼位于目錄ch06。這個例子在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ā)機中已經有了仑濒。我們shub login登錄Scrapinghub搞动,如下所示:
$ shub login
Insert your Scrapinghub API key : 180128bc7a0.....50e8290dbf3b0
Success.
我們已經在scrapy.cfg文件中復制了API key渣刷,我們還可以點擊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。我們可以看到兩個新目錄和一個文件股冗,可以選擇刪除或不刪除。
$ ls
build project.egg-info properties scrapy.cfgsetup.py
$ rm -rf build project.egg-info setup.py
現在烹棉,如果我們在Scrapinghub點擊Spiders欄(1)怯疤,我們可以看到上傳的tomobile爬蟲:
如果我們點擊它(2)集峦,可以轉到爬蟲的工作臺。里面的信息很多塔淤,但我們要做的是點擊右上角的Schedule按鈕(3),在彈出的界面中再點擊Schedule(4)聪黎。
幾秒鐘之后妨马,Running Jobs欄會出現新的一行杀赢,再過一會兒脂崔,Requests和Items的數量開始增加梧喷。
提示:你或許不會限制抓取速度砌左。Scrapinghub使用算法估算在不被封的情況下汇歹,你每秒的最大請求數偿凭。
運行一段時間后,勾選這個任務(6)弯囊,點擊Stop(7)。
幾秒之后匾嘱,可以在Completed Jobs看到抓取結束。要查看抓取文件撬讽,可以點擊文件數(8)悬垃。
訪問文件
來到任務的工作臺。這里盗忱,可以查看文件(9),確認它們是否合格扇谣。我們還可以用上面的條件過濾結果闲昭。當我們向下翻動時,更多的文件被加載進來序矩。
如果有錯的話,我們可以在Items的上方找到有用的關于Requests和Log的信息(10)瓶蝴。用上方的面包屑路徑(11)可以返回爬蟲或項目主頁。當然舷手,可以點擊左上的Items按鈕(12)下載文件,選擇合適的選項(13)男窟,保存格式可以是CSV、JSON和JSON Lines牺六。
另一種訪問文件的方法是通過Scrapinghub的Items API。我們要做的是查看任務頁或文件頁的URL淑际。應該看起來和下面很像:
https://dash.scrapinghub.com/p/28814/job/1/1/
在這個URL中凉唐,28814是項目編號(scrapy.cfg中也設置了它),第一個1是爬蟲“tomobile”的ID編號,第二個1是任務編號读整。按順序使用這三個數字,我們可以在控制臺中用curl取回文件强品,請求發(fā)送到https://storage.scrapinghub.com/items/<project id>/<spider id>/<job id>,并使用用戶名/API key驗證的榛,如下所示:
$ 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當做數據存儲后端盏档。存儲的時間取決于訂閱套餐的時間(免費試用是七天)。
制定周期抓取
只需要點擊Periodic Jobs欄(1)懦窘,點擊Add(2),設定爬蟲(3)畅涂,調整抓取頻率(4),最后點擊Save(5)苹丸。
總結
本章中苇经,我們首次接觸了將Scrapy項目部署到Scrapinghub。定時抓取數千條信息扇单,并可以用API方便瀏覽和提取。后面的章節(jié)中施流,我們繼續(xù)學習設置一個類似Scrapinghub的小型服務器鄙信。下一章先學習配置和管理。
序言
第1章 Scrapy介紹
第2章 理解HTML和XPath
第3章 爬蟲基礎
第4章 從Scrapy到移動應用
第5章 快速構建爬蟲
第6章 Scrapinghub部署
第7章 配置和管理
第8章 Scrapy編程
第9章 使用Pipeline
第10章 理解Scrapy的性能
第11章(完) Scrapyd分布式抓取和實時分析