Scrapy邮件发送功能及爬虫停止信息

Spider中编写如下:

from scrapy.mail import MailSender
from scrapy.xlib.pydispatch import dispatcher
from scrapy import signals

在class类的上方编写emial的链接配置信息:

mailers= MailSender(smtphost="smtp.qq.com",  # 发送邮件的服务器    
mailfrom="abcdefg@qq.com",  # 邮件发送者
smtpuser="abcdefg@qq.com",  # 用户名
smtppass="qtpzvxxyyxxyyxxyyxde",  # 发送邮箱的密码不是你注册时的密码,而是授权码!!!切记!
smtpport=25 # 端口号
)  #初始化邮件模块

class类中编写信号量监听和具体的邮件发送代码:

 def  __init__(self):
    """ 监听信号量 """
    super(YoutubeapiSpider, self).__init__()
    # 当收到spider_closed信号的时候,调用下面的close方法来发送通知邮件    
    dispatcher.connect(self.close, signals.spider_closed)

 def  close(spider, reason):
   """ 执行邮件发送操作 """
  body ="爬虫[%s]已经关闭,原因是: %s"% (spider.name, reason)        
  subject ="[%s]爬虫关闭提醒"% spider.name        
  mailers.send(to={"admin@qq.com","quinns@aliyun.com"}, 
  subject=subject,                   
  body=body)

这样就会在收到爬虫关闭信号的时候,通过abcdefg@qq.com给指定的admin@qq.comquinns@aliyun.com发送邮件(实际应用的时候可以考虑给1个或多个邮箱发送),邮件内容是body,邮件标题是subject。

 

毕竟停止信息里面对爬虫状态和记录比较详细,所以邮件中应当发送停止信息。

当然了,写法很多,除了def close 还可以:

def __init__(self):
  """ 监听信号量 """
  super(YoutubeapiSpider, self).__init__()# 当收到spider_closed信号的时候,调用下面的close方法来发送通知邮件
  dispatcher.connect(self.spider_closed, signals.spider_closed)
def spider_closed(self, spider, reason):
      # 上方的信号量触发这个方法
      stats_info = self.crawler.stats._stats  # 爬虫结束时控制台信息
      body = "爬虫[%s]已经关闭,原因是: %s.\n以下为运行信息:\n %s" % (spider.name, reason, stats_info)
      subject = "[%s]爬虫关闭提醒" % spider.name
      mailers.send(to={"513720453@qq.com"},
                   subject=subject,
                   body=body)

只要满足触发条件,就可以发送指定内容的邮件。

转载自:https://yq.aliyun.com/articles/629315

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值