2017-04-25 49 views
0

建立蟒蛇和scrapy bashfile顺序冲突

我有一个名为rooms一个Scrapy蜘蛛,名为liverpool_rooms.py Python脚本,并从名为liverpool_rooms.csv以前的“运行”现有的蜘蛛输出文件。


问题

我想依次激活名为start_liverpool.txt一个bash文件蜘蛛和脚本。

由于Scrapy无法覆盖,但只能将输出附加到现有文件,在此顺序激活之前,我想删除liverpool_rooms.csv以便Scrapy创建新的liverpool_rooms.csv

的bashfile如下,

  1. 删除现有文件liverpool_rooms.csv
  2. 运行蜘蛛rooms
  3. 运行脚本liverpool_rooms.py

重要:liverpool_rooms.py进口蜘蛛出口liverpool_rooms.csv


Bashfile

#!/bin/bash 

cd /Users/.../spiders 
PATH=$PATH:/usr/local/bin 
export PATH 
rm liverpool_rooms.csv && 
scrapy crawl rooms -o liverpool_rooms.csv && 
python liverpool_rooms.py 


冲突

我运行bashfile说明liverpool_rooms.csv时收到错误liverpool_rooms.py无法找到。这是因为rm liverpool_rooms.csv会删除.csv文件,并且在运行蜘蛛之前显然会在错误上检查python liverpool_rooms.py

如何防止在运行蜘蛛之前检查错误liverpool_rooms.py

+0

您是否打算将'Run spider rooms'作为后台进程运行? – Inian

+0

我不确定我的理解。最终,我想通过cron作业每周运行一次bash文件。我希望它按照步骤1. 2.和3.顺序。 – LucSpan

+0

由于你的语句被'&&'隔开,如果第一个语句失败(当没有找到csv文件,'rm'将会失败),第二个和第三个语句将不会被执行。 – Inian

回答

0

在第一次运行此脚本时,不会有csv文件要删除,因此脚本会失败。

解决方案:

#!/bin/bash 

cd /Users/.../spiders 
PATH=$PATH:/usr/local/bin 
export PATH 
rm liverpool_rooms.csv ; true 
scrapy crawl rooms -o liverpool_rooms.csv 
python liverpool_rooms.py 

说明:

  • ; true使脚本忽略任何错误做删除
  • 我删除了&&时,因为它是没有必要的内一个脚本