使用Scrapyd部署爬蟲


為什么要用Scrapyd?
Scrapyd是scrapinghub官方提供的爬蟲管理、部署施掏、監(jiān)控的方案之一,另一個(gè)是Scrapy Cloud茅糜。
官方對(duì)它的定義是
Scrapy Doc

Scrapyd is an application for deploying and running Scrapy spiders. It enables you to deploy (upload) your projects and control their spiders using a JSON API.

Scrapyd是一個(gè)部署和運(yùn)行Scrapy爬蟲的應(yīng)用程序七芭。它使你能夠通說(shuō)JSON API部署(上傳)工程,并且控制工程中的爬蟲蔑赘。

如果你像我一樣受夠了笨笨地手動(dòng)啟動(dòng)爬蟲狸驳,洋氣點(diǎn)兒叫manully (-__-)b

scrapy crawl SPIDER_NAME

并且對(duì)多個(gè)爬蟲的多進(jìn)程運(yùn)行、負(fù)載均衡等傷透了腦筋缩赛,那么Scrapyd是你的救星耙箍,快跟我一起使用吧!
最后峦筒,等項(xiàng)目完善了究西,我們把它部署到Scrapy Cloud上去,然后沏杯茶靜靜地看著爬蟲爬呀爬......o()o


首先解決依賴

Python 2.6 or above
Twisted 8.0 or above
Scrapy 0.17 or above

然后安裝物喷,這里我推薦使用pip卤材。雖然我的部署環(huán)境是Ubuntu。但是我習(xí)慣使用pip安裝并管理Python依賴峦失,而不是apt-get扇丛。當(dāng)然你也可以全部使用apt-get。最忌諱的是pip和apt-get混用尉辑,管理起來(lái)你一定會(huì)奔潰的帆精,相信我。

pip install scrapyd

運(yùn)行Scrapyd服務(wù)

scrapyd

默認(rèn)情況下Scrapyd監(jiān)聽(tīng)0.0.0.0:6800端口隧魄,可以訪問(wèn)http://localhost:6800/查看卓练。
如果你像我一樣將Scrapyd安裝在服務(wù)器上,并且還沒(méi)有設(shè)置過(guò)驗(yàn)證方法购啄,可以將localhost替換為服務(wù)器外網(wǎng)IP地址襟企,同樣可以查看。
Warning: 危險(xiǎn)狮含!
我通過(guò)SSH遠(yuǎn)程登陸服務(wù)器工作顽悼。
為了防止SSH中斷連接使遠(yuǎn)程進(jìn)程終止曼振,推薦使用Screen管理每一條需要保持運(yùn)行的命令,包括Scrapyd蔚龙。Screen是Linux下的SSH遠(yuǎn)程會(huì)話管理工具冰评,必備神器!

screen -S scrapyd (啟動(dòng)一個(gè)新會(huì)話木羹,名字選你喜歡的甲雅,我習(xí)慣用進(jìn)程名嘱丢,在這里是scrapyd)

然后為了讓這個(gè)會(huì)話保持不退出侣诺,使用快捷鍵

CTRL + A + D

同時(shí)按這四個(gè)鍵你會(huì)回到screen命令之前的終端。
可以查看當(dāng)前所有screen

screen -ls

以后要想回到我們用啟動(dòng)的會(huì)話

screen -r scrapyd

為所欲為吧校坑!
再也不用擔(dān)心終端進(jìn)程意外懷孕穷遂,哦不函匕,意外退出了!

但是#

生產(chǎn)環(huán)境部署scrapyd服務(wù)的話要使用更專業(yè)的進(jìn)程管理工具蚪黑,例如Supervisor盅惜,參考


部署Scrapy項(xiàng)目
難道又要像我之前一樣蠢萌蠢萌地manully deploy?(-__-)b
Of course NOT忌穿!(●'?'●)
官方推薦使用scrapyd-deploy tool--scrapyd-client
安裝

pip install scrapyd-client

之后我們就可以使用一個(gè)超方便的scrapyd-deploy命令了抒寂。
該命令通過(guò)讀取scrapy項(xiàng)目目錄下的配置文件scrapy.cfg來(lái)獲取項(xiàng)目信息。
每一個(gè)scrapy.cfg對(duì)于scrapyd來(lái)說(shuō)都是一個(gè)target掠剑。所以我們需要先編輯scrapy.cfg文件

[deploy:NAME]

如果你只有一個(gè)deploy配置那么可以不寫NAME
但是如果你需要在多個(gè)遠(yuǎn)程服務(wù)器或者多個(gè)scrapyd進(jìn)程上部署的話
應(yīng)該為不同的deploy命名屈芜,方便部署。
查看當(dāng)前項(xiàng)目下的所有配置文件可以用命令

scrapyd-deploy -l

url = http://localhost:6800/
project = PROJECT_NAME

用于驗(yàn)證登陸scrapyd服務(wù)器朴译,如果scrapyd沒(méi)做驗(yàn)證井佑,那么為空(默認(rèn)不做驗(yàn)證,生產(chǎn)環(huán)境必須加驗(yàn)證C呤佟)
username = user
password = passwd

scrapyd-deploy [deploy_name]

deploy_name對(duì)應(yīng)上述配置文件中的配置名
如果你沒(méi)有為配置命名那么可以為空躬翁,表示使用默認(rèn)配置,默認(rèn)配置名為default

使用API
啟動(dòng)一個(gè)爬蟲

curl http://localhost:6800/schedule.json -d project=PROJECT_NAME -d spider=SPIDER_NAME

停止一個(gè)爬蟲

curl http://localhost:6800/cancel.json -d project=PROJECT_NAME -d job=JOB_ID

JOB_ID可以很方便地從web控制臺(tái)獲得

其他更多API

前文配置文件里我們提到了scrapd通過(guò)http驗(yàn)證登陸盯拱,可是遺憾的是截至發(fā)文盒发,scrapyd本身是不支持的。參考
我知道你打不開(kāi)Google的鏈接狡逢,(●ˇ?ˇ●)
大體摘錄如下

The authentication is for deploying the code, not for accesing the UI.Also, even though "scrapy deploy" does support using HTTP auth, Scrapyd doesn'tsupport it yet. To add HTTP auth to Scrapyd you need to host it behind a proxythat provides the auth.

可行的解決方案是將scrapyd服務(wù)掛在ngix后宁舰,讓ngix負(fù)責(zé)驗(yàn)證工作。
參考ngix配置如下

# Scrapyd local proxy for basic authentication.
# Don't forget iptables rule.
# iptables -A INPUT -p tcp --destination-port 6800 -s ! 127.0.0.1 -j DROP
 
server {
        listen 6801;
 
        location ~ /\.ht {
                deny all;
        }
 
        location / {
                proxy_pass            http://localhost:6800/;
                auth_basic            "Restricted";
                auth_basic_user_file  /etc/nginx/conf.d/.htpasswd;
        }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末奢浑,一起剝皮案震驚了整個(gè)濱河市蛮艰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌殷费,老刑警劉巖印荔,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異详羡,居然都是意外死亡仍律,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門实柠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)水泉,“玉大人,你說(shuō)我怎么就攤上這事窒盐〔菰颍” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵蟹漓,是天一觀的道長(zhǎng)炕横。 經(jīng)常有香客問(wèn)我,道長(zhǎng)葡粒,這世上最難降的妖魔是什么份殿? 我笑而不...
    開(kāi)封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮嗽交,結(jié)果婚禮上卿嘲,老公的妹妹穿的比我還像新娘。我一直安慰自己夫壁,他們只是感情好拾枣,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著盒让,像睡著了一般梅肤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上邑茄,一...
    開(kāi)封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天凭语,我揣著相機(jī)與錄音,去河邊找鬼撩扒。 笑死似扔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的搓谆。 我是一名探鬼主播炒辉,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼泉手!你這毒婦竟也來(lái)了黔寇?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤斩萌,失蹤者是張志新(化名)和其女友劉穎缝裤,沒(méi)想到半個(gè)月后屏轰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡憋飞,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年霎苗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片榛做。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡唁盏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出检眯,到底是詐尸還是另有隱情厘擂,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布锰瘸,位于F島的核電站刽严,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏避凝。R本人自食惡果不足惜港庄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望恕曲。 院中可真熱鬧鹏氧,春花似錦、人聲如沸佩谣。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)茸俭。三九已至吊履,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間调鬓,已是汗流浹背艇炎。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留腾窝,地道東北人缀踪。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像虹脯,于是被迫代替她去往敵國(guó)和親驴娃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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