1+
2+ import smtplib
3+ from email .mime .text import MIMEText
4+ from email .header import Header
5+ import requests
6+ from bs4 import BeautifulSoup
7+ import prettytable as pt
8+
9+ def get_Data (url ):
10+ data_list = []
11+ response = requests .get (url )
12+ html_doc = response .text
13+ soup = BeautifulSoup (html_doc , 'lxml' ) # 自动补全html代码,并按html代码格式返回
14+ wendu = soup .find ('div' , class_ = 'temperature' ).get_text ()
15+ tianqi = soup .find ('div' , class_ = 'weather-icon-wrap' ).get_text ()
16+ data_list .append ("现在的温度:%s\n 现在天气情况:%s" % (wendu , tianqi ))
17+ list = soup .find_all ('ul' , class_ = 'weather-columns' )
18+ for item in list :
19+ data_list .append (item .get_text ())
20+ print ("列表数据:" ,data_list )
21+ a = 1
22+ tb = pt .PrettyTable () #创建PrettyTable对象
23+ tb .field_names = ["日期" ,"天气" ,"详情" ]
24+ for item in data_list :
25+ # print(a)
26+ if a != 1 :
27+ tb .add_row ([item .strip ().split ()[0 ]+ item .strip ().split ()[1 ],item .strip ().split ()[2 ],item .strip ().split ()[3 ]])
28+ else : print (item .strip ())
29+ a += 1
30+ print (tb )
31+ return tb
32+
33+
34+
35+ def send_mail (msg ,receiver ):
36+ # 收件人
37+ receiver = receiver
38+ mail_title = '小姐姐,请查收今天以及往后15天的天气预报,愿你三冬暖,春不寒'
39+ mail_body = str (msg )
40+ # 创建一个实例
41+ message = MIMEText (mail_body , 'plain' , 'utf-8' ) # 邮件正文
42+ # (plain表示mail_body的内容直接显示,也可以用text,则mail_body的内容在正文中以文本的形式显示,需要下载)
43+ message ['From' ] = sender # 邮件的发件人
44+ message ['To' ] = receiver # 邮件的收件人
45+ message ['Subject' ] = Header (mail_title , 'utf-8' ) # 邮件主题
46+
47+ smtp = smtplib .SMTP_SSL ("smtp.qq.com" , 465 ) # 创建发送邮件连接
48+ smtp .connect (smtpserver ) # 连接发送邮件的服务器
49+ smtp .login (username , password ) # 登录服务器
50+ smtp .sendmail (sender , receiver , message .as_string ()) # 填入邮件的相关信息并发送
51+
52+ smtp .quit ()
53+
54+
55+
56+ if __name__ == '__main__' :
57+ sender = 'xxx@qq.com'
58+ # 发件人邮箱的SMTP服务器(即sender的SMTP服务器)
59+ smtpserver = 'smtp.qq.com'
60+ # 发件人邮箱的用户名和授权码(不是登陆邮箱的密码)
61+ username = 'xxxxxx'
62+ # 邮箱授权码
63+ password = 'xxxxx'
64+ url1 = 'https://tianqi.so.com/weather/'
65+ url_list = ['url1' ,'url1' ]
66+ receiver_list = 'xxx@qq.com'
67+ tb = get_Data (url1 ) #获得每一个用户的数据
68+ send_mail (tb ,receiver_list ) #发送邮件
69+ #
0 commit comments