爬虫又报错了?用 Scrapy 来一发邮件不就好了!_如何在scrapy中发送电子邮件错误日志(1)

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

在 Scrapy 中发送 Email 推荐使用 MailSender。其同框架中其他的部分一样,使用了 Twisted 非阻塞式(non-blocking)IO 。

class scrapy.mail.MailSender(smtphost=None, mailfrom=None, smtpuser=None, smtppass=None, smtpport=None)

参数由以下组成:

smtphost (str) – 发送email的SMTP主机(host)。如果忽略,则使用 MAIL_HOST 。
        mailfrom (str) – 用于发送email的地址(address)(填入 From:) 。 如果忽略,则使用 MAIL_FROM 。
        smtpuser – SMTP用户。如果忽略,则使用 MAIL_USER 。 如果未给定,则将不会进行SMTP认证(authentication)。
        smtppass (str) – SMTP认证的密码
        smtpport (int) – SMTP连接的端口
        smtptls – 强制使用STARTTLS
        smtpssl (boolean) – 强制使用SSL连接
使用Scrapy设置对象来初始化对象。其会参考 这些Scrapy设置.

参数: settings (scrapy.settings.Settings object) – the e-mail recipients

send(to, subject, body, cc=None, attachs=(), mimetype='text/plain')
 发送email到给定的接收者。
参数:  

to (list) – email接收者  subject (str) – email内容  cc (list) – 抄送的人  body (str) – email的内容  attachs (iterable) – 可迭代的元组 (attach_name, mimetype, file_object)。 attach_name 是一个在email的附件中显示的名字的字符串, mimetype 是附件的mime类型, file_object 是包含附件内容的可读的文件对象。  mimetype (str) – email的mime类型

三、实际写法

根据上面官网文档的一些介绍和语法(更多语法请上官网翻阅)

这里编写一段示例代码(结合爬虫关闭信号)

3.1 设置邮箱pop

登录 QQ 邮箱  找到设置-账户

然后生成授权码(以前是生成密码,现在用授权码)

3.2 编码

在具体的爬虫文件中编写:

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

接着在 Class 的上方编写 Emial 的链接配置信息:

mailers = MailSender(
    smtphost="smtp.qq.com",  # 发送邮件的服务器
    mailfrom="1499450062@qq.com",   # 邮件发送者
    smtpuser="1499450062@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)

这样就会在收到爬虫关闭信号的时候,通过 1499450062@qq.com 给指定的 admin@qq.com 和 quinns@aliyun.com 发送邮件,邮件内容是 body,邮件标题是 subject。

3.3 另一种写法

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

在这里插入图片描述

感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 18
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值