scrapy发送qq邮件,使用python模块和使用scrapy自带方法
2023-09-14 09:00:32 时间
scrapy发送qq邮件
发送邮件的意义
- 给scrapy加入发送邮件功能,其目的旨在报错预警,这对运维现有爬虫有着很大的积极意义
- 或者爬虫爬取结束后,发邮件告诉开发者,hi,任务已经完成了.
- 我不纠结于是否使用scrapy自带的发送邮件功能,我的目的只是去实现它,用简单直接的方式
- 发送邮件的方法很多,现在演示python自带的发送,还有scrapy自带的发送
第一种,使用python自带的邮件模块
setting里面
########## email ##########
SMTP_SERVER = 'smtp.qq.com'
SMTP_PORT = 465
SMTP_OVER_SSL = True
SMTP_CONNECTION_TIMEOUT = 10
EMAIL_PASSWORD = 'XXX' # 填写生成的授权码
EMAIL_SENDER = 'XXX@qq.com'
EMAIL_RECIPIENTS = [EMAIL_SENDER]
EMAIL_SUBJECT = 'Email from #scrapydweb'
########## email ##########
# 用于发送邮件的模块
import smtplib
from email.mime.text import MIMEText
from scrapy.utils.project import get_project_settings
settings = get_project_settings()
# QQ邮件
# 1> 配置邮箱SMTP服务器的主机地址,将来使用这个服务器收发邮件。
HOST = settings["SMTP_SERVER"]
# # 2> 配置服务的端口,默认的邮件端口是25.
PORT = settings["SMTP_PORT"]
# # 3> 指定发件人和收件人。
FROM = settings["EMAIL_SENDER"]
TO = settings["EMAIL_RECIPIENTS"]
PASSWORD = settings["EMAIL_PASSWORD"]
# # 4> 邮件标题
SUBJECT = '这是一封测试邮件'
# # 5> 邮件内容
CONTENT = '这是xxxxx发送过来的邮件。请注意查收!'
CONTENT2 = """
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html";charset="utf-8">
<title>Dcp's python email</title>
</head>
<body>
<p>Dcp's babys:</p>
<p><h1>Happy New Year!</h1></p>
</body>
</html>
"""
# # 创建邮件发送对象
# # 普通的邮件发送形式
# smtp_obj = smtplib.SMTP()
# # 数据在传输过程中会被加密的邮件发送形式。
smtp_obj = smtplib.SMTP_SSL(HOST)
#
# # 需要进行发件人的认证,授权。
# # smtp_obj就是一个第三方客户端对象
smtp_obj.connect(host=HOST, port=PORT)
# # 如果使用第三方客户端登录,要求使用授权码,不能使用真实密码,防止密码泄露。
res = smtp_obj.login(user=FROM, password=PASSWORD)
print('登录结果:', res)
#
# # 发送邮件
# msg = '\n'.join(['From: {}'.format(FROM), 'To: {}'.format(TO), 'Subject: {}'.format(SUBJECT), '', CONTENT2])
# print(msg)
# print(type(msg))
# smtp_obj.sendmail(from_addr=FROM, to_addrs=TO, msg=msg.encode('utf-8'))
msg = MIMEText(CONTENT2, 'html', 'utf-8') # 邮件内容,三个参数:第一个为文本内容,第二个 html 设置文本格式,第三个 utf-8 设置编码
msg["Subject"] = "Your Red Bag is Coming.."
msg["From"] = FROM
msg['To'] = ";".join(TO) # 这里注意如果是一个接收人列表要这么写!
# print(msg)
# print(msg.as_string())
# print(type(msg))
smtp_obj.sendmail(from_addr=FROM, to_addrs=TO, msg=msg.as_string())
第二种,使用scrapy的发送,
- 我们是要发送爬虫结束的邮件,所以我们需要写一个发送邮件的middleware.
- 重点在spider_closed,即爬虫结束后执行的操作
- 也可以直接写成一个爬虫
- 还可以在爬虫异常的时候发送邮件,
########## scrapy email ##########
MAIL_HOST = SMTP_SERVER
MAIL_FROM = EMAIL_SENDER
MAIL_USER = EMAIL_SENDER
MAIL_PASS = EMAIL_PASSWORD # 授权码
MAIL_PORT = 25
########## scrapy email ##########
import scrapy
from scrapy import cmdline
from scrapy.utils.project import get_project_settings
settings = get_project_settings()
from scrapy.mail import MailSender
mailer = MailSender()
class SendEmailSpider(scrapy.Spider):
name = 'send_email'
start_urls = ['https://www.baidu.com/']
# FROM = settings["EMAIL_SENDER"]
# TO = settings["EMAIL_RECIPIENTS"]
def parse(self, response):
mailer = MailSender.from_settings(settings)
# 发送邮件
body = "some body"
mailer.send(to=settings["EMAIL_RECIPIENTS"], subject="Some subject", body=body) # cc是抄送
if __name__ == '__main__':
cmdline.execute("scrapy crawl send_email".split())
相关文章
- Python之——python-nmap的安装与常用方法说明
- 【Python成长之路】python 基础篇 -- 装饰器【华为云分享】
- Python 字符串_python 字符串截取_python 字符串替换_python 字符串连接
- [Python] Magic methods
- 【Python五篇慢慢弹】数据结构看python
- python两个 list 交集,并集,差集的方法+两个tuple比较操作+两个set的交集,并集,差集操作+两个dict的比较操作
- 华为OD机试 - 字符串筛选排序(Java & JS & Python)
- Python语言学习:Python语言学习之python包/库package的简介(模块的封装/模块路径搜索/模块导入方法/自定义导入模块实现华氏-摄氏温度转换案例应用)、使用方法、管理工具之详细攻略
- Python编程语言学习:python语言中快速查询python自带模块&函数的用法及其属性方法、如何查询某个函数&关键词的用法、输出一个类或者实例化对象的所有属性和方法名之详细攻略
- Python:python语言中与时间有关的库函数简介、安装、使用方法(获取当前时间/计算程序块前后运行时间/模型训练时间或耗费时间)之详细攻略
- Python语言学习之打印输出那些事:python输出图表和各种吊炸天的字符串或图画、版权声明(如README.md)等之详细攻略
- Python编程语言学习:包导入和模块搜索路径(包路径)简介、使用方法(python系统环境路径的查询与添加)之详细攻略
- Python:python语言中与时间有关的库函数简介、安装、使用方法(获取当前时间/计算程序块前后运行时间/模型训练时间或耗费时间)之详细攻略
- Python:pmml格式文件的简介、安装、使用方法(利用python将机器学习模型转为Java常用的pmml格式文件)之详细攻略
- Python语言学习:利用python语言实现调用内部命令(python调用Shell脚本)—命令提示符cmd的几种方法
- Python语言学习之字符串那些事:python和字符串的使用方法之详细攻略
- Python之API:基于python语言调用华为云API(华为网站)实现特定功能
- Python语言学习之文件格式后缀那些事:python和常见各种文件格式后缀介绍、使用方法之详细攻略
- Python语言学习之常见语句命令那些事:python和常见语句命令(条件语句、pass语句)使用方法之详细攻略
- Python语言学习之双下划线那些事:python和双下划线使用方法之详细攻略
- Python之ffmpeg-python:ffmpeg-python库的简介、安装、使用方法之详细攻略
- 已解决2. Set PROTOCOL_BUPFERS_PYTHON_iMPLEMENTATION=python (but this will use pure-Python parsing and w
- 已解决(Python安装报错)Visit python.org to download an earlier version of Python.
- 从零开始学python | 什么是Python JSON?
- Python编程:查看python语法中的关键字keyword
- 9.python 系统批量运维管理器之Fabric模块
- Python 头部 #!/usr/bin/python 和 #!/usr/bin/env 的区别
- Python实现Paramiko的二次封装
- 转载:大厂5G python自动化测试面试必会 | 对象与面向对象(1)