通过“Email提醒”实例演示Python爬虫综合实战。
01
Email提醒
大家可能会奇怪 Email在 Python 爬虫开发中有什么用呢? Email主要起到提醒作用,当爬虫在运行过程中遇到异常或者服务器遇到问题时,可以通过 Email及时向自己报告。
发送邮件的协议是STMP,Python内置对SMTP的支持,可以发送 纯文本邮件、HTML邮件以及带附件的邮件。Python对SMTP的支持包括smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。
在介绍发送Email之前,首先申请一个163邮箱,开启 SMTP功能。这里采用的网易的电子邮件服务器smtp.163.com,如图15-1所示。
■ 图15-1 163邮箱开启SMTP
将SMTP开启之后,构造一个纯文本邮件:
from
 email.mime text
import
 MIMEText

msg = MIMEText(
'Python爬虫运行异常,异常信息为遇到HTTP403'
'plain'
'utf-8'
)
构造MIMEText对象时需要3个参数:
• 邮件正文。
• MIME的subtype,传入“plain”表示纯文本,最终的MIME就是“text/plain”。
• 设置编码格式,UTF-8编码保证多语言兼容性。
接着设置邮件的发件人、收件人和邮件主题等信息,并通过SMTP发送出去。代码如下:
#coding:utf-8
from
 email.header
import
 Header

from
 email.mime.text
import
 MIMEText

from
 email.utils
import
 parseaddr, formataddr


import
 smtplib


def_format_addr(s):
    name, addr = parseaddr(s)

return
 formataddr((Header(name,
'utf-8'
).encode(), addr))

#发件人地址
from_addr =
'[email protected]'
#邮箱密码
password =
'pass'
#收件人地址
to_addr =
'[email protected]'
#163网易邮箱服务器地址
smtp_server =
'smtp.163.com'
#设置邮件信息
msg = MIMEText(
'Python爬虫运行异常,异常信息为遇到HTTP 403'
,
'plain'
,
'utf-8'
)

msg[
'From'
] = _format_addr(
'一号爬虫 <%s>'
 % from_addr)

msg[
'To'
] = _format_addr(
'管理员 <%s>'
 % to_addr)

msg[
'Subject'
] = Header(
'一号爬虫运行状态'
,
'utf-8'
).encode()

#发送邮件
server = smtplib.SMTP(smtp_server,
25
)

server.login(from_addr, password)

server.sendmail(from_addr, [to_addr], msg.as_string())

server.quit()
有时候发送的可能不是纯文本,需要发送 HTML 邮件,以便将异常网页信息发送回去。在构造MIMEText对象时,把HTML字符串传进去,再把第二个参数由“plain”变为“html”就可以了。如下所示:
msg = MIMEText('
<html><body><h1>
Hello
<h1>
'+

'
<p>
异常网页
<ahref="http:www.cnblogs.com">
 cnblogs
</a>
</p>
'+'

</body></html>
'.'html','utf-8')
02
源代码下载
关注微信公众号,后台回复关键词 “Email提醒” 即可获得完整源代码。
03
参考书籍 
《Python网络爬虫案例实战》
ISBN:978-7-302-56228-3
作者:李晓东

定价:89元
编辑推荐
案例项目为主线讲述Python爬虫开发中所需的知识和技能;
具有超强的实用性,项目随着图书内容的推进不断趋于工程化;
书中给出了80多个实例让读者理解概念、原理和算法
清华大学出版社给爱读书的你们最大的优惠力度!
当当网自营图书大促
添加优惠券,“实付满300减60”
目前图书本身还在48折左右,所以综合起来折扣更低!
这可是超大的优惠力度,优惠码数量有限,还不赶紧薅羊毛!
怎么BUY ?
优惠码:
TVZTMT 
使用渠道:当当小程序或当当APP
使用时间:5月30日~6月3日
使用方法:
·步骤一,挑选心仪的图书至购物车点击结算
·步骤二,点击优惠券/码处
·步骤三,输入优惠码 TVZTMT(注意要大写)
需要注意的是:优惠码全场自营图书可用(教材、考试类除外)
选书太纠结?推荐几本必买的 Python好书
助你囤的疯狂、读的畅快,绝不后悔!
扫码,微店购买全套Python图书
04
精彩文章回顾

继续阅读
阅读原文