如何将ScrapyFileLogObserver文件发送到我的电子邮箱

时间:2014-08-28 01:55:18

标签: python scrapy scrapy-spider

我想在蜘蛛关闭时给自己发一封电子邮件 我看这个source,我可以收到邮件。但我发现当蜘蛛出错时它会写failure.getTraceback()

部分源代码:

def spider_error(self, failure, response, spider):
    self.files[spider.name + '.log'].write(failure.getTraceback())
    self.num_errors += 1

但我想让它可以将控制台日志发送到我的电子邮件中,如下所示:

2014-08-28 00:30:33+0000 [scrapy] INFO: Scrapy 0.24.2 started (bot: shopping)
2014-08-28 00:30:33+0000 [scrapy] INFO: Optional features available: ssl, http11, boto, django
2014-08-28 00:30:34+0000 [scrapy] WARNING: can't find the images!: http://www.example.com
2014-08-28 00:30:34+0000 [email] ERROR: Spider error processing <GET http://www.example.com 

我需要这个日志,因为如果我得到WARNING: can't find the images!: http://www.example.com,我可以运行另一个蜘蛛来获取错过的图像

现在我的方法是使用ScrapyFileLogObserver(open("spider.log", 'w'), level=log.INFO).start()来写一个文件。运行蜘蛛后,我打开它来检查是否有错误。我想知道我是否可以将此文件发送到我的电子邮件或只是&#39;文&#39;在文件中

有人可以教我怎么做吗?谢谢。

1 个答案:

答案 0 :(得分:0)

您可以使用2种设置来保存文件:LOG_FILELOG_LEVEL;这两个也有一个命令行参数--logfile=FILE--loglevel=LEVEL, -L LEVEL

现在,为了发送电子邮件,StatsMailer使用了一个名为MailSender的帮助程序。要使用此帮助程序,您必须使用创建SMTP连接所需的所有信息进行实例化,方法send接受发送电子邮件所需的所有信息。在方法send上,您将找到参数attachs,它是具有3个元素((<name>, <mime_type>, <file instance>), )的元组的元组。