scrapy爬蟲部署服務器的方法步驟

一、scrapy爬蟲部署服務器

scrapy通過命令行運行一般隻用於測試環境,而用於運用在生產環境則一般都部署在服務器中進行遠程操作。

scrapy部署服務器有一套完整的開源項目:scrapy+scrapyd(服務端)+scrapy-client(客戶端)+scrapydweb

1、scrapyd

1.介紹

Scrapyd是用於部署和運行Scrapy爬蟲的應用程序。它使您可以使用JSON API部署(上傳)項目並控制其爬蟲。

是目前分佈式爬蟲的最好解決方法之一

官方文檔 https://scrapyd.readthedocs.io/

2.安裝

pip install scrapyd

安裝過程中可能會遇到大量的錯誤,大部分都是所依賴的包沒有安裝,安裝過程中要確保scrapy已經安裝成功,隻要耐心的將所有缺少的依賴包安裝上就可以瞭

打開命令行,輸入scrapyd,如下圖:

瀏覽器訪問:http://127.0.0.1:6800/

2、scrapy-client

1.介紹:

scrapy-client它允許我們將本地的scrapy項目打包發送到scrapyd 這個服務端(前提是服務器scrapyd正常運行

官方文檔https://pypi.org/project/scrapyd-client/

2.安裝

pip install scrapy-client

和上面的scrapyd一樣,可能會遇到各種錯誤,耐心一點,大部分都是安裝依賴

3、scrapydweb(可選)

1.介紹

ScrapydWeb:用於Scrapyd集群管理的Web應用程序,支持Scrapy日志分析和可視化。

官方文檔:https://pypi.org/project/scrapydweb/

2.安裝

pip install scrapyd

在保持scrapyd掛起的情況下運行命令scrapydweb,也就是需要打開兩個doc窗口

運行命令scrapydweb,首次啟動將會在當前目錄下生成配置文件“scrapydweb_settings_v*.py”

更改配置文件
編輯配置文件,將ENABLE_LOGPARSER更改為False

添加訪問權限

SCRAPYD_SERVERS = [
    '127.0.0.1:6800',
    # 'username:password@localhost:6801#group',
    ('username', 'password', 'localhost', '6801', 'group'),
]

HTTP基本認證

ENABLE_AUTH = True
USERNAME = 'username'
PASSWORD = 'password' 

瀏覽器訪問:http://127.0.0.1:5000/1/servers/

二、實際操作(一切的操作都在scrapyd啟動的情況下)

1.上傳爬蟲

編輯scrapy.cfg,url是scrapyd服務器的位置,由於scrapyd在本地,所以是localhost。

註意:我們要切換到和scrapy.cfg同級目錄下,繼續以下操作

scrapyd-deploy

上圖表示運行成功!

以上的文件夾是成功後自動創建的(為什麼之前的截圖有,我之前已經測試過)

然後輸入以下命令上傳服務器

scrapyd-deploy demo -p qcjob

結構:scrapyd-deploy -p (scrapyd-deploy <目標> -p <項目>)

運行成功的圖片

2.啟動爬蟲

cmd輸入(爬取一天內關於java的職業需求

curl http://localhost:6800/schedule.json -d project=qcjob -d spider=job -d key = java time=0

我編寫的爬蟲可以根據用戶輸入的參數來爬取數據

key=表示關鍵字(默認是全部)

time=表示時間(0=24小時,1=3天內,2=一周內,3=一個月內,默認為0)

當然scrapyd強大之處在於可以用http方式控制爬蟲

http://localhost:6800/schedule.json?project=qcjob&spider=job&key=java&time=0 #POST

以下是用postmain進行模擬post請求。

然後進入http://127.0.0.1:6800/

點擊job,就可以查看爬蟲是否運行,和運行時間

從圖可以看出,這個爬蟲運行瞭9分31秒。

當然我們也可以從scrapydweb中查看和管理爬蟲瀏覽器訪問:http://127.0.0.1:5000/1/servers/

我們可以通過可視化界面來控制爬蟲運行,scrapyd可以啟動多個不同的爬蟲,一個爬蟲的多個版本啟動。是目前分佈式爬蟲的最好解決方法!!!

三、數據展示

本次爬取花費9分31秒,共爬去25,000餘條數據,爬蟲速度開至每秒8次訪問,以他該服務器的最大訪問量

其中部分數據存在有誤,為瞭保證速度,沒有進行過多的篩取和排查,錯誤率保持較低水平

四、問題與思考

  • 通過爬去可以看得出,如果采用單一的爬蟲的話,爬取速度還是比較慢的,如果采用多個爬蟲,分佈式爬取的話,就存在數據是否重復以及數據的共用問題。
  • 如果采用分佈式爬蟲的話,就涉及到ip代理,因為一臺機器如果大量訪問的話經過測試會導致瀏覽器訪問,該網頁都無法打開,如果設置IP代理,就需要大量的代理IP
  • 雖然爬蟲已經部署在服務器上,但是還是無法做到,通過用戶輸入關鍵字時間等地址等多個參數進行爬取數據,無法做到實時展示,隻能先運行爬蟲,爬取大量數據儲存與數據庫,然後才能進行分析,做出圖表。
  • 關於數據的統計與展示,單一的sql語句,很難滿足其對大量數據的分析,可能需要用Python的數據分析庫,對數據進行處理,然後才能展示。

五、收獲

已經可以通過http請求的方式來控制爬蟲的啟動停止,以及傳遞參數,就等於scrapy爬蟲是可以集成於web應用裡面的。

到此這篇關於scrapy爬蟲部署服務器的方法步驟的文章就介紹到這瞭,更多相關scrapy爬蟲部署服務器內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: