Python 2.7 spider关闭时如何发送日志
我想在spider关闭时将日志发送到电子邮件Python 2.7 spider关闭时如何发送日志,python-2.7,logging,scrapy,Python 2.7,Logging,Scrapy,我想在spider关闭时将日志发送到电子邮件 我知道如何发送电子邮件,我有一个电子邮件分机 我知道如何将日志保存到文件中 但我不知道如何直接将日志写入电子邮件body 请帮帮我 这是我的蜘蛛 #! -*- encoding: utf-8 -*- from scrapy.spiders import Spider import logging from datetime import datetime logger = logging.getLogger(__name__) logger.set
我知道如何发送电子邮件,我有一个电子邮件分机
我知道如何将日志保存到文件中 但我不知道如何直接将日志写入电子邮件
body
请帮帮我
这是我的蜘蛛
#! -*- encoding: utf-8 -*-
from scrapy.spiders import Spider
import logging
from datetime import datetime
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
handler = logging.FileHandler('../logs/test.log')
handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
class MySpider(Spider):
name = "abctest"
start_urls = ["https://www.google.com.tw"]
def __init__(self,**kwargs):
super(MySpider, self).__init__()
def parse(self, response):
logger.info("info1")
logger.info("info2")
logger.info("info3")
logger.error("error2")
logger.error("error3")
它将写入test.log
:
2015-10-01 14:35:02,075 - test.spiders.e_test - INFO - info1
2015-10-01 14:35:02,075 - test.spiders.e_test - INFO - info2
2015-10-01 14:35:02,076 - test.spiders.e_test - INFO - info3
2015-10-01 14:35:02,076 - test.spiders.e_test - ERROR - error2
2015-10-01 14:35:02,076 - test.spiders.e_test - ERROR - error3
我想使用下面的分机发送电子邮件但我仍然不知道如何将日志写入
body
# -*- coding: utf-8 -*-
from scrapy import signals
def send_email(user, pwd, recipient, subject, body):
import smtplib
gmail_user = user
gmail_pwd = pwd
FROM = user
TO = recipient if type(recipient) is list else [recipient]
SUBJECT = subject
TEXT = body
# Prepare actual message
message = """\From: %s\nTo: %s\nSubject: %s\n\n%s
""" % (FROM, ", ".join(TO), SUBJECT, TEXT)
try:
server = smtplib.SMTP("smtp.gmail.com", 587)
server.ehlo()
server.starttls()
server.login(gmail_user, gmail_pwd)
server.sendmail(FROM, TO, message)
server.close()
print 'successfully sent the mail'
except:
print "failed to send mail"
class Mail(object):
@classmethod
def from_crawler(cls, crawler):
ext = cls()
crawler.signals.connect(ext.spider_closed, signal=signals.spider_closed)
#crawler.signals.connect(ext.spider_error, signal=signals.spider_error)
return ext
def spider_closed(self, spider, reason):
send_email("test@gmail.com","pass","test@gmail.com",
subject='No item scraped on %s' % spider.name,
body='No item scraped on %s' % spider.start_urls)