12

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

4

7 回答 7

37

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

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

然后正常开始爬行:

scrapy crawl someSpider
于 2013-05-21T11:15:55.377 回答
19

您也需要重定向 stderr 。您只重定向标准输出。您可以像这样重定向它:

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

于 2013-05-20T13:26:25.610 回答
7

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

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

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

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

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

这些命令记录在这里

于 2019-08-26T08:10:50.480 回答
1

如果您想从 runspider 命令获取输出。

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

这也有效。

于 2017-03-04T01:32:22.903 回答
0

你可以使用nohup

nohup scrapy crawl someSpider &

日志将存储在 nohup.out

于 2018-09-28T11:06:55.603 回答
0

您可以保存为日志文件:

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

loglevel可以是 、 、 和 之间CRITICALERROR一个,WARNING或者表示没有日志。欲了解更多信息,请阅读DocINFODEBUG--nolog

于 2020-10-28T14:15:17.327 回答
0
scrapy crawl someSpider --logfile some.text

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

于 2021-01-26T13:37:31.037 回答