如何保存Scrapy crawl命令输出

时间:2013-05-20 13:15:12

标签: python scrapy

我正在尝试保存我尝试过的scrapy crawl命令的输出 scrapy crawl someSpider -o some.json -t json >> some.text 但它没有用......有些人可以告诉我如何将输出保存到文本文件中......我的意思是scrapy打印的日志和信息......

7 个答案:

答案 0 :(得分:18)

您可以将这些行添加到settings.py

LOG_STDOUT = True
LOG_FILE = '/tmp/scrapy_output.txt'

然后正常开始抓取:

scrapy crawl someSpider

答案 1 :(得分:13)

您还需要重定向stderr。您只重定向stdout。 你可以像这样重定向它:

scrapy crawl someSpider -o some.json -t json 2> some.text

密钥是数字2,它“选择”stderr作为重定向源。

如果您想将stderr和stdout重定向到一个文件,可以使用:

scrapy crawl someSpider -o some.json -t json &> some.text

有关输出重定向的更多信息: http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html

答案 2 :(得分:0)

如果你想从runspider命令获得输出。

scrapy runspider scraper.py -o some.json -t json 2> some.text

这也有效。

答案 3 :(得分:0)

您可以使用nohup

nohup scrapy crawl someSpider &

日志将存储在nohup.out中

答案 4 :(得分:0)

对于所有scrapy命令,您可以添加--logfile NAME_OF_FILE以登录到文件,例如

scrapy crawl someSpider -o some.json --logfile some.text

还有另外两个有用的命令行记录选项:

  • -L--loglevel来控制日志记录级别,例如-L INFO(默认为DEBUG

  • --nolog完全禁用日志记录

这些命令是documented here

答案 5 :(得分:0)

您可以另存为日志文件:

scrapy crawl someSpider -s LOG_FILE=fileName.log -L <loglevel>

日志级别可以是CRITICALERRORWARNINGINFODEBUG--nolog之间的一个没有日志。有关更多信息,请阅读Doc

答案 6 :(得分:0)

scrapy crawl someSpider --logfile some.text

这将完全符合您的要求,将您在屏幕上看到的命令的输出保存到文本文件中。