scrapy爬蟲部署服務(wù)器的方法步驟
一、scrapy爬蟲部署服務(wù)器
scrapy通過命令行運行一般只用于測試環(huán)境,而用于運用在生產(chǎn)環(huán)境則一般都部署在服務(wù)器中進(jìn)行遠(yuǎn)程操作。
scrapy部署服務(wù)器有一套完整的開源項目:scrapy+scrapyd(服務(wù)端)+scrapy-client(客戶端)+scrapydweb
1、scrapyd
1.介紹
Scrapyd是用于部署和運行Scrapy爬蟲的應(yīng)用程序。它使您可以使用JSON API部署(上傳)項目并控制其爬蟲。
是目前分布式爬蟲的最好解決方法之一
官方文檔 https://scrapyd.readthedocs.io/
2.安裝
pip install scrapyd
安裝過程中可能會遇到大量的錯誤,大部分都是所依賴的包沒有安裝,安裝過程中要確保scrapy已經(jīng)安裝成功,只要耐心的將所有缺少的依賴包安裝上就可以了
打開命令行,輸入scrapyd,如下圖:
瀏覽器訪問:http://127.0.0.1:6800/
2、scrapy-client
1.介紹:
scrapy-client它允許我們將本地的scrapy項目打包發(fā)送到scrapyd 這個服務(wù)端(前提是服務(wù)器scrapyd正常運行)
官方文檔https://pypi.org/project/scrapyd-client/
2.安裝
pip install scrapy-client
和上面的scrapyd一樣,可能會遇到各種錯誤,耐心一點,大部分都是安裝依賴
3、scrapydweb(可選)
1.介紹
ScrapydWeb:用于Scrapyd集群管理的Web應(yīng)用程序,支持Scrapy日志分析和可視化。
官方文檔:https://pypi.org/project/scrapydweb/
2.安裝
pip install scrapyd
在保持scrapyd掛起的情況下運行命令scrapydweb,也就是需要打開兩個doc窗口
運行命令scrapydweb,首次啟動將會在當(dāng)前目錄下生成配置文件“scrapydweb_settings_v*.py”
更改配置文件
編輯配置文件,將ENABLE_LOGPARSER更改為False
添加訪問權(quán)限
SCRAPYD_SERVERS = [ '127.0.0.1:6800', # 'username:password@localhost:6801#group', ('username', 'password', 'localhost', '6801', 'group'), ]
HTTP基本認(rèn)證
ENABLE_AUTH = True USERNAME = 'username' PASSWORD = 'password'
瀏覽器訪問:http://127.0.0.1:5000/1/servers/
二、實際操作(一切的操作都在scrapyd啟動的情況下)
1.上傳爬蟲
編輯scrapy.cfg,url是scrapyd服務(wù)器的位置,由于scrapyd在本地,所以是localhost。
注意:我們要切換到和scrapy.cfg同級目錄下,繼續(xù)以下操作
scrapyd-deploy
上圖表示運行成功!
以上的文件夾是成功后自動創(chuàng)建的(為什么之前的截圖有,我之前已經(jīng)測試過)
然后輸入以下命令上傳服務(wù)器
scrapyd-deploy demo -p qcjob
結(jié)構(gòu):scrapyd-deploy -p (scrapyd-deploy <目標(biāo)> -p <項目>)
運行成功的圖片
2.啟動爬蟲
cmd輸入(爬取一天內(nèi)關(guān)于java的職業(yè)需求)
curl http://localhost:6800/schedule.json -d project=qcjob -d spider=job -d key = java time=0
我編寫的爬蟲可以根據(jù)用戶輸入的參數(shù)來爬取數(shù)據(jù)
key=表示關(guān)鍵字(默認(rèn)是全部)
time=表示時間(0=24小時,1=3天內(nèi),2=一周內(nèi),3=一個月內(nèi),默認(rèn)為0)
當(dāng)然scrapyd強大之處在于可以用http方式控制爬蟲
http://localhost:6800/schedule.json?project=qcjob&spider=job&key=java&time=0 #POST
以下是用postmain進(jìn)行模擬post請求。
然后進(jìn)入http://127.0.0.1:6800/
點擊job,就可以查看爬蟲是否運行,和運行時間
從圖可以看出,這個爬蟲運行了9分31秒。
當(dāng)然我們也可以從scrapydweb中查看和管理爬蟲瀏覽器訪問:http://127.0.0.1:5000/1/servers/
我們可以通過可視化界面來控制爬蟲運行,scrapyd可以啟動多個不同的爬蟲,一個爬蟲的多個版本啟動。是目前分布式爬蟲的最好解決方法!??!
三、數(shù)據(jù)展示
本次爬取花費9分31秒,共爬去25,000余條數(shù)據(jù),爬蟲速度開至每秒8次訪問,以他該服務(wù)器的最大訪問量
其中部分?jǐn)?shù)據(jù)存在有誤,為了保證速度,沒有進(jìn)行過多的篩取和排查,錯誤率保持較低水平
四、問題與思考
- 通過爬去可以看得出,如果采用單一的爬蟲的話,爬取速度還是比較慢的,如果采用多個爬蟲,分布式爬取的話,就存在數(shù)據(jù)是否重復(fù)以及數(shù)據(jù)的共用問題。
- 如果采用分布式爬蟲的話,就涉及到ip代理,因為一臺機器如果大量訪問的話經(jīng)過測試會導(dǎo)致瀏覽器訪問,該網(wǎng)頁都無法打開,如果設(shè)置IP代理,就需要大量的代理IP
- 雖然爬蟲已經(jīng)部署在服務(wù)器上,但是還是無法做到,通過用戶輸入關(guān)鍵字時間等地址等多個參數(shù)進(jìn)行爬取數(shù)據(jù),無法做到實時展示,只能先運行爬蟲,爬取大量數(shù)據(jù)儲存與數(shù)據(jù)庫,然后才能進(jìn)行分析,做出圖表。
- 關(guān)于數(shù)據(jù)的統(tǒng)計與展示,單一的sql語句,很難滿足其對大量數(shù)據(jù)的分析,可能需要用Python的數(shù)據(jù)分析庫,對數(shù)據(jù)進(jìn)行處理,然后才能展示。
五、收獲
已經(jīng)可以通過http請求的方式來控制爬蟲的啟動停止,以及傳遞參數(shù),就等于scrapy爬蟲是可以集成于web應(yīng)用里面的。
到此這篇關(guān)于scrapy爬蟲部署服務(wù)器的方法步驟的文章就介紹到這了,更多相關(guān)scrapy爬蟲部署服務(wù)器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python按照某列內(nèi)容對兩個DataFrame進(jìn)行合并操作方法
這篇文章主要給大家介紹了關(guān)于Python按照某列內(nèi)容對兩個DataFrame進(jìn)行合并操作的相關(guān)資料,文中通過代碼示例介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Python具有一定的參考借鑒價值,需要的朋友可以參考下2023-08-08python實現(xiàn)自動登錄人人網(wǎng)并采集信息的方法
這篇文章主要介紹了python實現(xiàn)自動登錄人人網(wǎng)并采集信息的方法,涉及Python模擬登陸及正則匹配的相關(guān)技巧,需要的朋友可以參考下2015-06-06pyqt彈出新對話框,以及關(guān)閉對話框獲取數(shù)據(jù)的實例
今天小編就為大家分享一篇pyqt彈出新對話框,以及關(guān)閉對話框獲取數(shù)據(jù)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06python?包?requests?實現(xiàn)請求操作
這篇文章主要介紹了python?包?requests?實現(xiàn)請求操作,文章介紹內(nèi)容包括帶參數(shù)請求、自定義headers,文章內(nèi)容詳細(xì)具有一定的參考價值,需要的小伙伴可以參考一下2022-04-04