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!
推薦閱讀:
- Python爬蟲基礎講解之scrapy框架
- python3 scrapy框架的執行流程
- 快速搭建python爬蟲管理平臺
- Python爬蟲進階Scrapy框架精文講解
- Python Scrapy爬蟲框架使用示例淺析