Scrapy是一個流行的爬蟲框架,利用Scrapyd,可以將其部署在遠程服務端運行,並通過命令對爬蟲進行管理,而Gerapy為我們提供了精美的UI,可以在web頁面上直接點擊操作,管理部署在scrapyed上的爬蟲,本文介紹
Scrapyd與Gerapy的基本安裝與使用方法
一、Scrapyd簡介:
Scrapyd是一個服務,允許用戶將爬蟲部署在服務端,並通過HTTP JSON的方式控制爬蟲,並且可以通過web頁面監控爬蟲狀態
二、Scrapyd安裝部署:
在向服務器部署爬蟲時,我們需要下載2個模塊
1、scrapyd(安裝在服務端,運行服務)
2、scrapy-client(安裝在客戶端,用於將自己的爬蟲部署到服務器上)
- 服務端安裝部署:
首先在遠程的Ubuntu服務器上安裝scrapyd:
pip install scrapyd
安裝完畢后,查看scrapyd的配置文件,scrapyd會在如下位置依次查找配置文件,並以最后一個找到的配置文件為准進行配置
/etc/scrapyd/scrapyd.conf (Unix)
c:\scrapyd\scrapyd.conf (Windows)
/etc/scrapyd/conf.d/* (in alphabetical order, Unix)
scrapyd.conf
~/.scrapyd.conf (users home directory)
查看scrapyd的安裝目錄 */site-packages/scrapyd,發現有一個default_scrapyd.conf默認配置文件,打開該文件,顯示如下內容
這里有一個名為bind_address的選項,默認值為127.0.0.1,我們將其改為0.0.0.0( 在服務器中,0.0.0.0指的是本機上的所有IPV4地址,如果一個主機有多個IP地址,並且該主機上的一個服務監聽的地址是0.0.0.0,那么通過多個ip地址都能夠訪問該服務。)
配置完畢后輸入
Scrapyd &啟動后台服務
此時輸入
netstat -an | grep 6800查看,發現6800端口已經啟動監聽
隨后,打開瀏覽器,輸入 服務端地址:6800,顯示如下頁面,配置成功
不過,此時,我們發現頁面中的Available projects一行為空,這是因為我們還沒有部署任何Scrapy爬蟲項目,接下來,我們要將客戶端的Scrapy項目部署到服務器上運行
- 客戶端安裝部署:
pip install scrapy-client
執行完畢后,找到scrapy-client的安裝目錄,發現一個名為
scrapyd-deploy的文件,我們把它復制到scrapy項目中與scrapy.cfg同級的目錄中(不復制也可以,但這樣操作會方便一點)
打開scrapy.cfg文件,有如下內容,需要做的就是把[deploy]改為
[deploy:target]的形式,target名稱自擬,然后再把url前的注釋去掉,並且將地址改為scrapyd的服務器地址。
修改完畢后,我們需要用剛剛復制來的scrapyd-deploy來部署爬蟲,打開scrapyd-deploy文件,找到如下部分,給出了scrapyd-deploy可以接收的參數以及相應的作用
我們發現輸入-l可以列出所有可用的target,由於scrapyd-deploy本身是一個python文件,因此我們輸入
python scrapyd-deploy -l來查看target的配置情況
查看結果與剛才在scrapy.cfg文件中的配置相同。
隨后輸入
python scrapyd-deploy -L test來查看名為test的target下可用的爬蟲項目
同樣與配置相符
隨后我們輸入python scrapy-deploy test -p toolspider 將test中的toolspider項目部署到scrapyd服務端

出現以上信息,代表部署成功,此時打開 服務器地址:6800 這個頁面,發現Available projects中已經有了我們剛剛部署的toolspider項目
三、使用Scrapyd管理爬蟲
Scrapyd采用http與json的方式管理爬蟲,下面來看一下具體的用法
1、執行爬蟲
執行爬蟲用到的是schedule.json,通過向
http://localhost:6800/schedule.json提交post請求並附帶項目名以及爬蟲名參數完成
在服務端輸入
curl http://localhost:6800/schedule.json -d project=toolspider -d spider=toolspider執行剛才部署的爬蟲(d表示data,即post請求提交的數據),執行完畢后返回如下結果
此時再查看瀏覽器,Scrapyd頁面,點擊Jobs,出現如下信息,爬蟲執行完畢
2、查看項目
查看項目用到的是listprojects.json,此方法采用get方式提交,不接受參數,可以直接在瀏覽器端提交並查看返回結果
同樣,在服務端輸入
curl http://localhost:6800/schedule.json也可以得到結果
查看項目中的爬蟲,用到的是listspider.json,同樣也是get方法,接受一個project參數,即具體項目名,效果如圖
3、刪除項目
刪除項目用到的是delproject.json,采用post方法,提交一個項目名稱的數據
在服務端輸入
curl http://localhost:6800/schedule.json -d project=toolspider即可刪除
4、其他
除此之外還有daemonstatus.json,addversion.json,listversions.json,delversion.json,cancel.json,listjobs.json,具體使用方法可以查看scrapyd官方文檔
https://scrapyd.readthedocs.io/en/stable/
四、采用Gerapy管理爬蟲
scrapyd采用命令行的形式,通過http與json對爬蟲進行管理,操作顯得有些繁瑣,對爬蟲的狀態展示也不直觀,而Gerapy為我們提供了精美的UI與簡介的操作方式,只需要用鼠標在瀏覽器上點擊操作便可以完成對爬蟲的管理,需要注意的是,Gerapy只為我們提供了操作界面,真正的爬蟲還是部署在服務器的Scrapyd上,
1、Gerapy下載
pip install gerapy
下載完成后在命令行中輸入gerapy,出現如下信息說明安裝成功
2、Gerapy初始化
gerapy init
cd gerapy
gerapy migrate
在命令行中輸入gerapy init,執行完畢后在當前目錄下會生成一個名稱為gerapy的文件夾,隨后進入該文件夾,下輸入gerapy migrate ,成功后在gerapy目錄下生成一個sqlite數據庫
3、運行Gerapy
gerapy runserver
出現如下信息表示執行成功

隨后在瀏覽器中輸入127.0.0.1:8000打開gerapy界面如圖,我這里已經配置了一台遠程服務器,因此normal顯示為1
點擊左側的Client,隨后在Client界面的右上角點擊create創建遠程主機

輸入Scrapyd服務器的ip與端口(6800),自己隨便起個名字,完成配置,結果顯示如下
要執行爬蟲,直接點擊右側的schedule便可以顯示出當前項目中的所有爬蟲信息,點擊run按鈕便可直接運行爬蟲,並實時在頁面上顯示狀態

