阿里雲WindowsServer部署python scrapy爬蟲


*本文適合Python新手

准備工作:

1,一個阿里雲ECS服務器實例

2,阿里雲ECS服務器實例中安裝好Mysql

3,本地開發機並已經寫好爬蟲項目

部署步驟:

一、復制本地Python環境至阿里雲服務器

  1,阿里雲服務器上安裝Anaconda(本地開發機也同樣用的這個配置環境,新手適應度100,嘿嘿)

  2,導出本地Python環境到文件中

#進入要導出的python環境
D:\>activate python27
#導出環境到文件中
(python27) D:\>conda env export --file py27.yml

  3,將py27.yml文件復制到阿里雲服務器比如D盤根目錄

  4,在服務器命令行(管理員)中輸入下面的命令,然后activate一下,沒問題的話OK,環境復制完畢

D:\>conda env create --file py27.yml

二、阿里雲服務器安裝 scrapyd注意是scrapydddddddddd!!!

(python27) D:\>pip install scrapyd

  本人對這個scrapyd 也是一知半解,通過摸索,簡單理解為一個高級的網站,可以通過它本身的各種 json api 控制你的爬蟲,OK,現在啟動網站( ctrl+c 關閉)

(python27) D:\>scrapyd

    出現以下內容表明,已經部署成功啦

2018-07-21T23:59:41+0800 [-] Loading c:\programdata\anaconda3\envs\python27\lib\site-packages\scrapyd\txapp.py...
2018-07-21T23:59:43+0800 [-] Scrapyd web console available at http://0.0.0.0:6800/
2018-07-21T23:59:43+0800 [-] Loaded.
2018-07-21T23:59:43+0800 [twisted.application.app.AppLogger#info] twistd 16.6.0 (c:\programdata\anaconda3\envs\python27\python.exe 2.7.13) starting up.
2018-07-21T23:59:43+0800 [twisted.application.app.AppLogger#info] reactor class: twisted.internet.selectreactor.SelectReactor.
2018-07-21T23:59:43+0800 [-] Site starting on 6800
2018-07-21T23:59:43+0800 [twisted.web.server.Site#info] Starting factory <twisted.web.server.Site instance at 0x0000000004AB36C8>
2018-07-21T23:59:43+0800 [Launcher] Scrapyd 1.1.1 started: max_proc=16, runner='scrapyd.runner'

   在阿里雲本地輸入http://localhost:6800/ 已經可以打開這個網站啦!但是我們要從本地開發機上訪問它並且調用它的json api,怎么辦呢!輸入阿里雲的外網地址+端口,怎么回事,打不開?!然后我想起了阿里雲服務器都必須在安全組里對實例進行配置規則才能訪問該端口,好的,我去增加了6800的端口安全組,YES,在本地開發機上能訪問到這個地址啦!!!為自己的機制點贊!

三、在本地開發機上安裝scrapyd-client 

  看別人的步驟,輸入

(python27) D:\>pip install scrapyd-client

  嗯,然后進入爬蟲項目目錄,輸入

(python27) D:\zoom!zoom\PythonSpider\firstspider>scrapyd-deploy

  喜聞樂見的'scrapyd-deploy' 不是內部或外部命令,也不是可運行的程序或批處理文件。出現了。。。百度之。。。

  好吧,辦法是在..\Anaconda3\envs\python27\Scripts目錄下增加一個 scrapyd-deploy.bat 文件,我寫的是相對的路徑,各位看官自行找到自己電腦的那個目錄,文件內容如下,就好像是配置個環境變量,話說linux好像不用整這個,windows受鄙視了么?!

@echo off
"C:\ProgramData\Anaconda3\envs\python27\python.exe" "C:\ProgramData\Anaconda3\envs\python27\Scripts\scrapyd-deploy" %*

  再次輸入

(python27) D:\>scrapyd-deploy

    出現下面這個,bingo!scrapyd-deploy安裝完畢!

Unknown target: default

 四、修改爬蟲項目配置文件scrapy.cfg 

#服務器別名
[deploy:aliyun]
#服務器地址
url = http://xxx.xxx.xxx.xxx:6800/
#項目名稱
project = firstspider

 五、一切准備就緒,上傳我們的爬蟲項目至服務器嘍!大概意思就是 scrapyd-deploy 服務器別名 -p 項目名稱

(python27) D:\zoom!zoom\PythonSpider\firstspider>scrapyd-deploy aliyun -p firstspider

  出現以下這個,說明上傳成功!如果出現其他錯誤,自行百度吧,反正我遇到一個environment can only contain strings的錯誤,大神們有的說改scrapy或者scrapyd版本,有的說改python源碼,歐弟乖乖,我還是改版本吧,python真雞兒折騰!

Packing version 1532175294
Deploying to project "firstspider" in http://xxx.xxx.xxx.xxx:6800/addversion.json
Server response (200):
{"status": "ok", "project": "firstspider", "version": "1532175294", "spiders": 1, "node_name": "iZrtjqvcszmo77Z"}

 六、好嘍,啟動我們的爬蟲咯!等等,卧槽,又要一個 curl  工具,windows又又又又沒有!老老實實點服務器部署的那個scrapyd的網站上提示的那個鏈接去下載吧!最新的來一套,解壓,添加系統環境變量,煎餅果子來一套!yoyoyo,checkcheckcheck!

  然后,curl ......,下面三個加上步驟五的命令,夠我們新手玩了。。。 

#啟動爬蟲 此時參數為 -d project=項目名稱 -d spider=爬蟲名稱
(python27) D:\zoom!zoom\PythonSpider\firstspider>curl http://xxx.xxx.xxx.xxx:6800/schedule.json -d project=firstspider -d spider=dsfootball
{"status": "ok", "jobid": "13c328408ce011e8bcabe99e10d6e876", "node_name": "iZrtjqvcszmo77Z"}
#停止爬蟲 此時參數為 -d project=項目名稱 -d job=那個網站上顯示的job內容
(python27) D:\zoom!zoom\PythonSpider\firstspider>curl http://xxx.xxx.xxx.xxx:6800/cancel.json -d project=firstspider -d job=13c328408ce011e8bcabe99e10d6e876
{"status": "ok", "prevstate": null, "node_name": "iZrtjqvcszmo77Z"}
#刪除項目 此時參數為 -d project=項目名稱
(python27) D:\zoom!zoom\PythonSpider\firstspider>curl http://xxx.xxx.xxx.xxx:6800/delproject.json -d project=firstspider
{"status": "ok", "node_name": "iZrtjqvcszmo77Z"}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM