在bash中检查刮擦结果

时间:2018-09-20 12:59:40

标签: python bash scrapy

我在bash脚本中运行着多个蜘蛛,如下所示:

pipenv run scrapy runspider -o output-a.json a.py
pipenv run scrapy runspider -o output-b.json b.py

由于它们应该运行很长时间,因此我想采用一种简单的方法来监视其成功率;我的计划是在两个刮板都成功运行(即它们没有任何错误消息)时对https://healtchecks.io进行ping操作。我在代码上撒了一些assert语句,以便对此有足够的信心。

pipenv run scrapy runspider -o output-a.json a.py
result_a=$?
pipenv run scrapy runspider -o output-b.json b.py
result_b=$?

if [ $result_a -eq 0 && $result_b -eq 0]; then
    curl $url
fi

我的问题是,无论如何,每个scrapy runspider命令总是返回0。这意味着我无法真正检查它们是否成功。

有没有办法影响这种行为?我找不到一些命令行标志吗?如果没有,我将如何从python脚本运行两个蜘蛛并将它们的输出保存到定义的位置?我找到了this link,但没有提及如何处理退回的物品。

1 个答案:

答案 0 :(得分:0)

我最终解决此问题的方法是将日志输出分配给变量,并grep将其ERROR: Spider error processing解析。 Scrapy具有很好的行为,不会过早失败。如果我自己退出python脚本,我会丢失的。这样,我可以一个接一个地运行刮板并最终处理错误,因此在某些情况下无法100%平稳运行的情况下,我仍然可以在收集更多信息的同时得到通知。

相关问题