【壓歲錢來買服務器玩雲爬蟲】把Scrapy爬蟲一步一步經過Scrapyd部署到騰訊雲上(阿里雲同理)

咱們把爬蟲已經寫好了,並且在本地能夠運行了。
這個不是最終的目的啊。
咱們是要在服務器上運行爬蟲。
真正的:雲爬蟲!雲爬蟲!雲爬蟲!
騰訊服務器,阿里雲服務器均可以
就在這裏再來一篇手把手的將爬蟲部署到服務器上吧。
絕對從0教學。
一步一步的來,還有截圖
讓你從『倔強青銅』殺到『最強王者』php

福利就要寫在最前面
過大年了,你們是否是又有了壓歲錢了啊??啊哈哈哈哈,壓歲錢買糖吃還不如投資到本身身上。好比用來買課程,或者用來買服務器,來學習編程,寫爬蟲。來買服務器啊買服務器啊!只在本地跑,根本沒用的!恰巧,鏟屎官這裏就有上千元的阿里雲和騰訊雲的優惠券給你使用(每一款優惠只要點擊優惠連接,進入便可領取):html

阿里雲部分
【阿里雲新人1888元雲產品通用代金券】:
promotion.aliyun.com/ntms/yunpar…python

【阿里雲爆款雲主機,2折優惠券】:
promotion.aliyun.com/ntms/act/qw…sql

【阿里雲企業級服務器2折優惠券】:
promotion.aliyun.com/ntms/act/en…數據庫

騰訊雲編程

【新客戶無門檻領取總價值高達2775元代金券,每種代金券限量500張,先到先得】:
cloud.tencent.com/redirect.ph…json

【騰訊雲服務器、雲數據庫特惠,3折優惠券】:
cloud.tencent.com/redirect.ph…windows

--接下來是正文--瀏覽器

你們好,我是鏟屎官,爲啥要寫這篇文章,就是爲了讓你上『最強王者』! Scrapy的文章,好多好多,可是99%的文章都是,寫完爬蟲就完事兒了,至於後來怎麼用?去哪裏用?都沒有交帶。我這裏就交代一種,能夠把你的小蟲子部署到服務器上!可是怎麼部署,安全

當你去百度查『scrapy爬蟲部署』的時候
,有幾篇文章說,用Scrapyd,可是,他們都只是簡單的,在windows機器上部署,並且都是部署到本地。
對於想要大展宏圖的你,根本沒有幫助
那麼,就讓我來作這個引路人,帶你一步一步的,將Scrapy爬蟲,經過Scrapyd來部署到遠端的騰訊雲服務器上吧!同理,阿里雲服務器也是能夠的,我在兩種服務器上面都部署了爬蟲

貌似你們對爬蟲仍是很跟興趣的。以前鏟屎官寫的幾篇爬蟲文章,你們能夠自行在網上搜索。都反響不錯,充分的激起了你們學習Python,運用Python的熱情。感受Python不在是那麼的死板,再也不是像教科書上的說明,是實實在在的能夠在平時運用,編寫的程序語言。因此,這篇咱們就稍微進階一下:

將咱們的爬蟲部署到騰訊雲服務器上面(阿里雲服務器同理)。廢話很少說,咱們就來實戰操做吧。

這裏選擇什麼雲服務都是能夠的,阿里雲,AWS,騰訊雲,其餘雲都是沒有問題的。部署方法基本同樣,這裏爲了方便,因此筆者選擇了騰訊雲來作講解。

既然咱們選擇了騰訊雲,首先去騰訊雲的官網,註冊登陸一下。

https://cloud.tencent.com/
複製代碼

當你看到這篇文章的時候,我不知道騰訊雲的優惠是怎樣的,反正我當時,給我了7天的雲服務器體驗。我就準備拿這個試試手。騰訊雲界面長這個樣子:

登陸以後,買完服務器以後,在雲服務器界面,就會看到你的服務器實例了:

界面上面有你服務器的ip地址,咱們遠程登陸,就須要知道服務器的公網ip地址:

本地我用Mac的terminal的ssh登陸,輸入指令就是:

$ ssh root@1XX.XXX.XXX.XXX
複製代碼

而後輸入密碼,登陸成功,就會顯示以下界面:

臥槽,能夠看到,有3萬屢次的嘗試登陸,看來服務器的權限若是設置的不夠安全的話,是很容易被別人攻破的。

OK,服務器的東西咱們就先暫時放到一邊。輸入

$ exit
複製代碼

退出登陸。咱們先來講說爬蟲的事兒。

這裏,咱們待部署的爬蟲,是用

Scrapy
寫的。咱們要用到的工具,有Scrapyd和Scrapyd-client。這兩個是專門用來部署Scrapy爬蟲的東西。OK,既然要部署爬蟲,咱們就來先看一下咱們的爬蟲長什麼樣子。

這裏咱們部署的爬蟲只是我往後項目的一個簡單的版本,你能夠看『1024種子吞噬』。。。的Scrapy版本。

之因此好部署這個,是爲了往後在個人公衆號『皮爺擼碼』裏面,加入『代碼』自動回覆的功能而作準備。之後也會推出這樣的文章,敬請期待
。好了,如今就簡單介紹一下這個待部署的爬蟲長什麼樣子。

工程目錄仍是很簡單的,和標準的Scrapy建立目錄同樣:

至於工程怎麼寫,請參考[『「手把手」教你用爬蟲爬達蓋爾。。。。』]()文章。
咱們這期的爬蟲項目叫DailyWeb,裏面的蟲子叫Caolu。爬蟲『Caolu』的主要功能,就是從不一樣的主題區裏面,讀取當天發佈的帖子,而後將這些帖子的url,title,發佈時間和id都保存下來,存入數據庫中。

想要爬蟲源碼的同窗,請關注『皮爺擼碼』,裏面有不少爬蟲的文章哦。若是有什麼疑問,也能夠在公衆號裏面留言,我會一一查看的。

爬蟲就是這樣,咱們部署的任務,目前有兩個部分,遠端的服務器和咱們本地的電腦。咱們要把本地電腦的爬蟲部署到遠端的服務器上,上文中咱們提到了兩個東西Scrayd和Scrapyd-client這兩個東西,分別安裝的位置就是遠端服務器安Scrapyd,本地須要上傳的機器安裝Scrapy-client。那麼,咱們本地機器安裝scrapy-client。

$ pip isntall scrapy-client
複製代碼

安裝完成以後,咱們須要進入到你Scrapy工程目錄下,執行

$ scrapyd-deploy -l
複製代碼

就會生成一個scrapy.cfg文件。這個文件就是項目的配置文件,裏面大概長這個樣子:

[settings]
default = DailyWeb.settings

[deploy]
#url = http://localhost:6800/
project = DailyWeb
複製代碼

這裏,咱們須要改一些東西,將url的註釋取消掉,同時,改爲你服務器的地址,再在deploy後面加上一個遠端地址的名字。

[settings]
default = DailyWeb.settings

[deploy:TencentCloud]
url = http://119.75.216.20:6800/
project = DailyWeb
複製代碼

OK,本地的配置到這裏就結束了。咱們接着以前的教程來登陸你遠端的服務器,登陸成功以後,咱們須要安裝Python3.6,以及Scrapyd等東西。

你只須要按步驟輸入一下命令行就能夠,有些命令執行起來可能會時間比較長,請稍做等待

// 安裝依賴包
# yum -y groupinstall "Development tools"
# yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

  // 下載 Python 3.6.2
# wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz

  // 建立安裝目錄
# mkdir /usr/local/python3

  // 安裝 gcc
# yum -y install gcc

  // 安裝 Python 3.6.2
# tar -xvJf Python-3.6.2.tar.xz
# cd Python-3.6.2
# ./configure --prefix=/usr/local/python3
# make && make install

  // 安裝scrapyd
# pip3 install scrapyd

  // 安裝scrapy
# pip3 install scrapy
  // 安裝scrapyd-client
# pip3 install scrapyd-client
  // 安裝BeautifulSoup4,由於爬蟲中用到了,因此這裏得安裝一下
# pip3 install bs4
複製代碼

安裝好以後,運行命令

# '/usr/local/python3/bin/scrapyd' &
複製代碼

會啓動scrapyd,以下圖:

Scrapyd啓動後,是能夠經過訪問6800端口查看到網頁信息的。那麼這裏咱們若是想經過外網ip訪問到網頁,是失敗的
,咱們須要作一些修改須要修改一些設置。

首先,咱們得修改default_scrapyd.conf文件。這個問題件的路徑在下面:

咱們須要將 bind_address = 127.0.0.1 改成 bind_address = 0.0.0.0,這樣,就能夠經過外部訪問本地的ip了:

接着,咱們還須要給咱們的雲服務器配置一下安全組,要把6800的接口權限開通,這樣纔可以經過外網訪問到服務器的網頁。

騰訊雲的控制檯頁面,左側選擇安全組,

選擇新建按鈕,咱們這裏選擇經常使用的端口暴露,即第二個。

而後選擇修改規則,由於咱們要把6800加進去。

選擇添加規則,將ip設置成 0.0.0.0/0 即全網ip,端口寫 tcp:6800,選擇容許,而後點擊肯定。

安全組添加好了,那麼咱們回到服務器實例頁面,在更多裏面選擇配置安全組:

選擇咱們剛纔添加的那個安全組,點擊肯定。

OK,

如今就是見證奇蹟的時刻
,在本身的瀏覽器裏面,輸入本身服務器的公網ip再加6800端口號,好比我,個人服務器公網ip是:119.75.216.20,那麼我在瀏覽器裏面輸入的網址就應該是 119.75.216.20:6800。這樣,
就能夠看到Scrapyd的頁面!!

因爲咱們尚未部署爬蟲,因此,點擊Jobs和Logs連接進去以後,都是空頁面。

啊,個人快捷標籤你們就別關注了。看到這個頁面就說明你的Scrapyd在遠端的服務器上面已經跑成功了。

固然,這些端口6800什麼的,都是能夠配置的,配置文件就是在上面所說的那個default_scrapyd.conf文件。最關鍵的就是要給服務器配置安全組,將對應的端口開放,不然訪問不成功。

好了,接下來,咱們就該關注本地了,將咱們的爬蟲部署到服務器上。

本地進入到爬蟲工程的目錄。由於剛纔輸入了$ scrapyd-deploy -l生成了一個scrapy.cfg文件,咱們須要對這個文件修改一些東西。將文件修改爲一下樣式:

[settings]
default = DailyWeb.settings

[deploy:TencentCloud]
url = http://119.75.216.20:6800/   
project = DailyWeb
複製代碼

而後本地按照scrapyd-deploy <host> -p <project>輸入指令:

$ scrapyd-deploy TencentCloud -p DailyWeb
複製代碼

如果在這期間有錯誤,根據錯誤提示來自行安裝Python庫就好。等到部署成功,會出現以下畫面:

看到,服務器給咱們返回了一個json格式的結果。這個就是Scrapyd的最大特色,經過json來控制操做。上面顯示的是部署成功。

咱們若是想檢查部署的工程,按照scrapyd-deploy -L <host>,在本地輸入命令:

$ scrapyd-deploy -L TencentCloud
複製代碼

結果以下:

看到咱們的DailyWeb爬蟲已經成功部署到了騰訊雲服務器上了。

咱們能夠通命令:

curl http://119.75.216.20:6800/listprojects.json
複製代碼

能夠看到遠端服務器上的爬蟲:

OK,咱們如今若是想要爬蟲啓動,那麼只須要輸入命令:

$ curl http://119.75.216.20:6800/schedule.json -d project=<project name> -d spider=<spider name>
複製代碼

咱們這裏輸入的命令則是:

$ curl http://119.75.216.20:6800/schedule.json  -d project=DailyWeb -d spider=Caoliu
複製代碼

輸入完,本地的terminal會呈現:

咱們在瀏覽器裏,訪問服務器的6800端口,就可以在網頁的Jobs裏面看到爬蟲工做狀態了:

能夠看到,爬蟲的進度在Running裏面,當爬蟲爬完了,會在這個裏面:

咱們退到上級頁面,從Log裏面看,就發現有一條log文件。

23K的log文件,

文件的目錄在:

./logs/DailyWeb/Caoliu/290bee7261c411e8872052540089e098.log
複製代碼

打開以後,就能看到剛纔爬蟲運行時候留下來的Log了。關於Log怎麼打或者打什麼,這個是Scrapy框架裏本身寫好的,很是方便,直接導入python的logging庫,按照標準方法打印就能夠。

那麼,咱們應該如何取消一個Job呢?輸入命令:

curl http://119.75.216.20:6800/cancel.json -d project=<project name> -d job=<job id>
複製代碼

上面的job id,就是在Jobs頁面裏面看到的。

若是要移除一個工程,命令則是:

curl http://119.75.216.20:6800/delproject.json -d project=<project>
複製代碼

這裏說一個奇淫巧技,因爲服務器的scrapyd須要後臺運行,這裏我採用了# setsid scrapyd命令來後臺開啓服務,這樣關閉窗口後仍能進行鏈接。須要結束scrapyd進程時,利用# ps -ef | grep -i scrapyd 查看PID號,再# kill -9 PID結束進程。

如果想要固定的去執行爬蟲,這裏可使用Linux自帶的crontab。這個我還沒研究,應該不難,等下一步了能夠放出來給你們。

OK,到此爲止,若是你能跟着個人步驟一步一步作到這裏,首先恭喜你,說明你很優秀,頗有毅力,絕對是個編程的料,並且還有可能成爲

Python大神
對於優秀的人而言,獎勵是必須的,能夠關注『皮克啪的鏟屎官』,回覆『服務器爬蟲』,便可得到爬蟲的源碼,同時,能夠多試試回覆幾回,說不定有驚喜呢。

最後感言一下,爲何要寫這種手把手,一步一步來操做的文章,是由於,好多同窗都據說過Python,並且對Pyton抱有期待,想去學。可是,好多同窗非科班出身,或者以前就歷來沒學習過編程,哪像咱們這種編程的老油條,拿到一門語言都有本身獨特的學習方法可以快速掌握。這些同窗就很困惑,由於你們都說Python好,Python好學,Python容易,Python簡單,Python能幹不少事情事情。。。可是當本身面對Python的時候,Python確是一座大山。沒有人給他指引道路,沒有人告訴他,那片叢林第幾棵樹和第幾棵樹之間有通往下一關的道路,致使他們很苦惱,很困惑,從而就會打擊學習編程的積極性,就會產生「Python這麼簡單我都不會,看來我不是學習編程的料」這種負能量的想法。同窗!這樣想是不對的!學習編程,你要堅持啊!羅馬並不是一日建成的,任何看似熟練的技能,都是背後日日夜夜反覆打磨出來的結果。你若是對Python感興趣,喜歡學Python,我能夠給你帶路,我寫這種手把手的文章,就是爲了給大家引路,讓更多的同窗來投入到他們熱愛的編程學習中,體驗編程的快樂。如果你想學習,想改變本身,或者周圍有同窗想學習編程,請你手動把這篇文章分享出去,我但願,經過有趣的實戰Python項目,可以讓Python編程再也不那麼空洞,並且,新手來了能夠根據個人步驟一步一步來,感覺程序運行起來的快樂。您的分享,就是對我最大的支持。

OK,以上就是這期手把手一步一步將Scrapy爬蟲部署到服務器上的教程。

關注這個神奇的公衆號,裏面會有神奇代碼哦

相關文章
相關標籤/搜索