【发布时间】:2017-09-22 09:01:24
【问题描述】:
设置
我有一个名为 rooms 的 Scrapy 蜘蛛,一个名为 liverpool_rooms.py 的 Python 脚本,以及一个名为 liverpool_rooms.csv 的先前“运行”的现有蜘蛛输出文件。
问题
我想从名为start_liverpool.txt 的 bash 文件中依次激活蜘蛛和脚本。
由于 Scrapy 不能覆盖而只能将输出附加到现有文件,因此在此顺序激活之前,我想删除 liverpool_rooms.csv 以便 Scrapy 创建一个新的 liverpool_rooms.csv。
bash 文件如下,
- 删除现有文件
liverpool_rooms.csv - 运行蜘蛛
rooms - 运行脚本
liverpool_rooms.py
重要提示:liverpool_rooms.py 进口蜘蛛出口 liverpool_rooms.csv。
Bash 文件
#!/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
冲突
我在运行 bash 文件时收到 liverpool_rooms.py 的错误,指出找不到 liverpool_rooms.csv。这是因为rm liverpool_rooms.csv 删除了.csv 文件,显然python liverpool_rooms.py 在运行蜘蛛之前检查了错误。
如何防止在运行蜘蛛之前检查liverpool_rooms.py 的错误?
【问题讨论】:
-
您是否打算将
Run spider rooms作为后台进程运行? -
我不确定我是否理解。最终,我想通过 cron 作业每周运行一次 bash 文件。我希望它按顺序执行步骤 1. 2. 和 3.。
-
由于你有由
&&分隔的语句,如果第一个失败,第二个和第三个语句将不会执行(当找不到csv文件时,rm将失败)。 -
您是否打算仅在文件存在时删除文件,如果文件不存在则继续执行 2) 和 3)?
-
啊,我明白了。我也试过
rm liverpool_rooms.csv; scrapy crawl rooms -o liverpool_rooms.csv; python liverpool_rooms.py,但它给出了同样的错误。
标签: python bash scrapy conflict