ScrapingHub其實就是 Scrapy 背後的公司所推出來的線上爬蟲服務。
有興趣的可以去找一下由來。
要使用之前,要先去申請一下GitHub的帳號 ,
不會用沒關係,基本上也不會用到Git的指令,
只要有帳號就好。
此文章參考 scrapy爬蟲學習系列三:scrapy部署到scrapyhub上
然後做了些修改。
以下正文開始
首先登入,之類的就不說了。
建立一個新的Project
建立完成後,在同樣的Scrapy Cloud上面就會看到aaa的專案名稱
再來就看圖說故事吧,
你可以選 1 或 2 ,
但不知道是不是我系統的關係(Windows),
我用2一直無法發佈,所以這邊是選 1
有連接正常的話,應該會看到下面的畫面,選擇你要匯入的範本即可。
這邊有一點要注意,請先去fork 範例到你的github帳號,然後用他的範例匯入。
官方的範例在 官方範例Github ,本文的範例
fork的位置連過去後看右上方,按下去就對了。
可自由挑選看要哪個(自己的檔案放的位置在quotebot/quotebot/spiders/ 底下)。
選擇你的專案,按下 Connect
選擇你的分支,沒有分支就直接發佈吧(Deploy Branch)
如果選錯專案,請按2 ,先斷掉連結再回到上一張圖,重新連結。
再來就等待上傳了
如果成功 會看到 1 失敗就是看到 2
等等下面會補充失敗的原因。
發佈成功後,點一下 Dashboard ,會看到你的爬蟲以及範例的爬蟲程式。
再來就要執行了。
進去你的爬蟲程式,按下RUN ,噹噹,成功失敗就看這個了。
可以直接往下拉看 看 Complete Job的結果,糟了,一堆錯誤。此時….來DEBUG吧
要DEBUG,沒有錯誤訊息怎麼查?先點一下 ERROR的數字連結。
會連到這個畫面,按下More
看到錯誤訊息了…這啥東西??等等下面一併解決。
如果正常的話,會直接看到ITEM裡面有資料出來
(有些有錯誤的但ITEM也有資料,表示抓到一半碰到錯誤就結束了)
完成圖
題外話:你可能會想問,這些資料直接在本機跑也有辦法產生阿,我要這個幹嘛。
這些只是為了下一步做準備而已,官方有提供API可以撈資料,但我還沒研究XDDD
敬請期待…下篇文章。
再來下面會列一些我碰到的錯誤訊息,如果下面找不到你碰到的錯誤訊息…
請拜Google大神
Q1.發佈時產生錯誤怎麼辦?
A:通常是import 不正常的dll,因為這是線上服務,所以有些東西一定不能寫。
我這碰到的是
import sys
import io
from urllib import parse as urlparse
這三個通通不能寫,一寫上去就是連發佈都上不去。
p.s 修改時,可以直接在github上面修改,改好後commit,
在Code & Deploy的畫面 就會自動幫你更新了。
Q2.發佈完成,但RUN JOB時都會發生錯誤,錯誤的訊息是
'ascii' codec can't encode characters in position 0-21: ordinal not in range(128)
A:如果根據這段去查Google,應該有很多答案,有些叫你import sys或是 io,但偏偏不能加,
一加上去連發佈都不行。所以這邊採用的方式是 加上 .encode('utf-8')
在learn_node.css('h5 > a::text').extract_first() 的後面加上 .encode('utf-8')
Q3.同樣在RUN JOB時發生錯誤,錯誤訊息是
'NoneType' object has no attribute 'encode'
A:這次比較特別,他在撈完77筆資料的時候發生這個錯誤(一開始還沒注意到他有撈到資料,撞牆撞了老半天),
因為我要撈的博客來名言佳句,第78筆沒有作者!!!所以產生錯誤,
為什麼我知道是作者欄位沒有?再劃紅線的上面第二行,有寫到Item[author]
解決方式,也只能用if判斷是不是空值了。
author = learn_node.css('p.source-booimage
k>span.link:nth-child(2) >a::text')
if len(author) >= 1:
item['author'] = str(author.extract_first().encode('utf-8'))
else:
item['author'] = 'None'
沒有留言:
張貼留言