寫在前面:
強(qiáng)調(diào)一下攀芯,使用scrapyd并不是就裝一個scrapyd就完事了,為了更方便的使用scrapyd,還需要安裝一個scrapyd-client艇潭,scrapyd相當(dāng)于一個服務(wù)器,為了方便使用這個服務(wù)器我們需要在一個客戶機(jī)上對他進(jìn)行操作戏蔑,關(guān)系如此蹋凝。為何要使用scrapyd,個人認(rèn)為主要分為兩點(diǎn):
- 更優(yōu)爬蟲進(jìn)行調(diào)度(個人使用場景:也是我使用scrapyd的主要原因总棵,使用場景大致是這樣鳍寂,我需要對一個網(wǎng)站的1000個入口往下進(jìn)行爬去,通過參數(shù)控制啟動1000個爬蟲情龄,scrapyd不會讓這1000個同時啟動而是會依次跑下來這樣迄汛,能同時運(yùn)行多少爬蟲是根據(jù)機(jī)器性能自適應(yīng)決定的)
- 方便往服務(wù)器上部署爬蟲(原設(shè)計原因)
配置
首先安裝scrapyd,mac下安裝的話刃唤,直接pip安裝即可隔心,ubuntu下有專門的scrapyd源,需要單獨(dú)配置:
pip install scrapyd
安裝完成后啟動服務(wù)尚胞,默認(rèn)的端口是6800硬霍,打開localhost:6800即可
scrapyd
然后安裝scrapyd-client
pip install scrapyd-client
環(huán)境配置到此結(jié)束
使用
(丟人的分割,今天打開簡書發(fā)現(xiàn)了一年前寫的東西笼裳,已經(jīng)忘得差不多了憑著記憶寫一下方便以后在要用到的時候查資料吧唯卖。。躬柬。我能說第一行ubuntu有專門的源要單獨(dú)配置我都忘了嗎拜轨。。允青。ubuntu用戶自己查下吧簡單的)
先說一下scrapyd-client的運(yùn)作機(jī)制吧橄碾,scrapyd-client的作用和web開發(fā)中的gulp作用有點(diǎn)類似(gulp我沒用過說錯了別打我),用于打包你的工程提供給scrapyd服務(wù)器颠锉,因為是python所以會生成一個egg文件法牲,首先修改默認(rèn)生成的scrapy.cfg文件,其中deploy被注釋掉了琼掠,將注釋刪掉拒垃,恢復(fù)默認(rèn)的deploy確保使用先,進(jìn)一步修改根據(jù)個人需求再來吧瓷蛙。修改好的scrapy.cfg形式如下悼瓮,默認(rèn)的是沒有target這個參數(shù)的戈毒,需要配置其他的target部署直接在后面添加寫上自己喜歡的target即可
[deploy:<target>]
url = <url>
project = <project>
使用以下命令將對應(yīng)的工程部署到scrapyd服務(wù)器上去,如果工程沒有問題横堡,完成eggify后(蛋化埋市,不知道中文該咋說),會得到一個200的response翅萤,如果錯了去跑跑爬蟲看看吧恐疲,出錯基本都是代碼本身的問題。version可以不加套么,默認(rèn)應(yīng)該是使用時間戳來進(jìn)行版本控制的,只要主機(jī)時間不要亂跳一般不會有大問題碳蛋,如果自己進(jìn)行版本控制注意版本號的管理不要最后自己也亂了
scrapyd-deploy <target> -p <project> --version <version>
部署完成后胚泌,在對應(yīng)的工程目錄下,輸入
scrapyd-deploy -l
就可以查看目錄下打包的項目有什么肃弟,注意這里的l是小寫玷室,含義和ls基本一致,L大寫有更進(jìn)一步細(xì)化的作用笤受,基本操作中用不上穷缤,也就不表了。
完成上述操作后箩兽,可以使用scrapyd來控制爬蟲了津肛,其中-d參數(shù)是可選的,用于給爬蟲傳入額外的參數(shù)汗贫,例如
curl http://localhost:6800/schedule.json -d project=myproject -d spider=somespider -d setting=DOWNLOAD_DELAY=2 -d arg1=val1
如果啟動成功會給你返回
{"status": "ok", "jobid": "6487ec79947edab326d6db28a2d86511e8247444"}
這里的jobid可以在其他的操作中使用身坐,比如中止爬蟲等等,一般用不上落包,也不寫了部蛇,要用查一下API很簡單的。