大家好我从脚本中运行了多个蜘蛛。脚本将每天安排一次。
spider __init__ file
from twisted.python import log
import logging
LOG_FILE = 'logs/spider.log'
ERR_FILE = 'logs/spider_error.log'
logging.basicConfig(level=logging.INFO, filemode='w+', filename=LOG_FILE)
logging.basicConfig(level=logging.ERROR, filemode='w+', filename=ERR_FILE)
observer = log.PythonLoggingObserver()
observer.start()
蜘蛛内的:
import logging
.
.
.
logging.error(message)
如果蜘蛛代码中发生任何异常[就像我从MysqlDB中获取启动URL,如果连接失败,我需要关闭特定的蜘蛛而不是其他蜘蛛,因为我正在运行脚本中的所有蜘蛛]
提出CloseSpider(消息)
是否足以关闭特定蜘蛛的代码?
import logging
from scrapy.utils.log import configure_logging
LOG_FILE = 'logs/spider.log'
ERR_FILE = 'logs/spider_error.log'
configure_logging()
logging.basicConfig(level=logging.INFO, filemode='w+', filename=LOG_FILE)
logging.basicConfig(level=logging.ERROR, filemode='w+', filename=ERR_FILE)
我已将上述代码放在一个安排蜘蛛的脚本中。没有工作的文件没有创建,但在控制台我收到了日志消息。
我在configure_logging()中添加了install_root_handler = False,它给出了spider.log文件中所有控制台输出错误没有区别。
configure_logging(install_root_handler=False)
答案 0 :(得分:0)
你可以这样做:
from scrapy import cmdline
cmdline.execute("scrapy crawl myspider --logfile mylog.log".split())
将该脚本放在您放置scrapy.cfg