蟒蛇& scrapy bashfile顺序冲突

时间:2017-04-25 11:12:23

标签: python bash scrapy conflict

设置向上

我有一个名为rooms的Scrapy蜘蛛,一个名为liverpool_rooms.py的Python脚本以及之前运行的现有蜘蛛输出文件'名为liverpool_rooms.csv

问题

我想从名为start_liverpool.txt的bash文件中依次激活spider和脚本。

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

接下来是bash文件,

  1. 删除现有文件liverpool_rooms.csv
  2. 运行spider rooms
  3. 运行脚本liverpool_rooms.py
  4. 重要提示: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
    

    <小时/> 的冲突

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

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

1 个答案:

答案 0 :(得分: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使脚本在执行删除时忽略任何错误
  • 我删除了&&,因为在脚本
  • 中没有必要