私は、Python Scrapyクローラの複数のインスタンスを実行するスクリプトを持って、クローラは/root/crawler/batchscript.py
bashを使用してスクリプトにディレクトリを変更することはできません - cronの
int型であり、/root/crawler/
に私はそのscrapyクローラを持っています。
クローラは完全に正常に動作しています。私はスクレーパーが正常に動作batchscrip.py
ディレクトリ/root/crawler/
内で実行すると
batchscript.pyは
from scrapy.settings import Settings
from scrapy.utils.project import get_project_settings
from amazon_crawler.spiders.amazon_scraper import MySpider
process = CrawlerProcess(get_project_settings())
(のみreleventコードを掲示する)、次のようになります。
しかし、python /root/crawler/batchscript.py
を使用してこのディレクトリの外部から実行すると、意図した通りに実行されません。(設定が正しくインポートされません)get_project_settings()
は空です。私はbatchinit.sh
/root/crawler/
内のディレクトリスクレーパー ランを実行すると、私はbatchinit.sh
#!/bin/bash
alias batchscript="cd /root/crawler/"
python batchscript.py
と行動と呼ばれるbashスクリプトを作成し、あまりにも BASHスクリプトを作成しようとした
は同じ:(
です罰金。
B私がこのディレクトリの外から
bash /root/crawler/batchinit.sh
を使用して実行した場合、意図したとおりに実行されません。 (設定が正しくインポートされません)、get_project_settings()
は です。
なぜ私はそれをやっているのですか?究極の目標は何ですか?
私はこのスクリプトのcronジョブを作成したいと思います。私は上記のコマンドを使用してcronjobsをスケジュールしようとしましたが、上記のような問題があります。
シェルスクリプトでエイリアスを定義することで何をしようとしていますか?どうしてバッチスクリプトにエイリアシングするのではなく、その行にcd/root/crawler /を置くのはなぜですか? –
'scrapy'と' amazon_crawler'モジュールはどこにありますか?彼らは仮想環境にいますか? – lucasnadalutti
これは役立つかもしれません:http://stackoverflow.com/a/22466264/2874789 –