我有多個蜘蛛,我在 bash 腳本中運行,如下所示:pipenv run scrapy runspider -o output-a.json a.pypipenv run scrapy runspider -o output-b.json b.py由于他們應該運行很長時間,我想有一個簡單的方法來監控他們的成功率;我的計劃是在兩個刮板都成功運行時(即它們沒有任何錯誤消息)ping https://healtchecks.io。我已經assert在代碼上撒了一些聲明,以便對此充滿信心。pipenv run scrapy runspider -o output-a.json a.pyresult_a=$?pipenv run scrapy runspider -o output-b.json b.pyresult_b=$?if [ $result_a -eq 0 && $result_b -eq 0]; then curl $urlfi我的問題是,不管怎樣,每個scrapy runspider命令總是返回0。這意味著我無法真正檢查他們是否成功。有沒有辦法影響這種行為?我還沒有找到一些命令行標志?如果沒有,我將如何從 python 腳本運行這兩個蜘蛛并將它們的輸出保存到定義的位置?我找到了這個鏈接,但它沒有提到如何處理退回的物品。
1 回答

慕斯王
TA貢獻1864條經驗 獲得超2個贊
我最終解決這個問題的方法是將日志輸出分配給一個變量并將其grep
ping 到ERROR: Spider error processing
. Scrapy 有一個非常好的行為,即不會過早地失敗;如果我自己退出 python 腳本,我就會失去它。這樣我就可以一個接一個地運行一個scraper并最終處理錯誤,所以我仍然可以收集盡可能多的東西,同時在某些東西不能100%順利運行的情況下得到通知。
添加回答
舉報
0/150
提交
取消