首頁 > 軟體

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

2022-06-12 14:00:46

一、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爬蟲部署伺服器內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com