Python 小技能之抓取天气信息发送给小姐姐

共 3181字,需浏览 7分钟

 ·

2020-07-30 08:21

0add800362c5d7841da0222cb1b0e865.webp

文 | 潮汐

来源:Python 技术「ID: pythonall」

163dc36585a478ba16b369241aeff85b.webp


每天一个 Python 小技巧,你学废了吗?今天文章主要讲解如何将天气预报信息爬取下来并发送给小姐姐,感兴趣的朋友不妨试试,说不定会有意外收获呢!

抓取数据

爬虫的基本思路简易了解就三步:下载数据(根据需要爬取的 url 设定用户代理)、解析数据(编写爬取规则并获得数据)、保存数据。

知道上述步骤后咱们的需求是首先找到中国天气网链接 https://tianqi.so.com/weather/ ,抓取中国天气网的数据,获取天气信息部分代码如下:

    data_list = []    response = requests.get(url)    html_doc = response.text    soup = BeautifulSoup(html_doc, 'lxml')  # 自动补全html代码,并按html代码格式返回    wendu = soup.find('div', class_='temperature').get_text()    tianqi = soup.find('div', class_='weather-icon-wrap').get_text()    data_list.append("现在的温度:%s\n现在天气情况:%s" % (wendu, tianqi))    list = soup.find_all('ul', class_='weather-columns')    for item in list:        data_list.append(item.get_text())    print("列表数据:",data_list)    a = 1    #创建PrettyTable对象,用于将天气数据用表格的方式输出    tb = pt.PrettyTable()     tb.field_names = ["日期","天气","详情"]    for item in data_list:        # print(a)        if a != 1:            tb.add_row([item.strip().split()[0]+item.strip().split()[1],item.strip().split()[2],item.strip().split()[3]])        else: print(item.strip())        a+=1    print(tb)    return tb

输出结果为:

现在的温度:23现在天气情况:多云
+-------------+--------------+----------------+| 日期 | 天气 | 详情 |+-------------+--------------+----------------+| 今天(07-28) | 雷阵雨 | 22/31℃优西南风 || 明天(07-29) | 多云 | 24/32℃良西南风 || 周四(07-30) | 阴 | 25/33℃良西南风 || 周五(07-31) | 雷阵雨 | 24/33℃良西南风 || 周六(08-01) | 多云 | 25/34℃良西南风 || 周日(08-02) | 中雨转雷阵雨 | 24/33℃优南风 || 周一(08-03) | 多云 | 25/32℃优东风 || 周二(08-04) | 小雨 | 22/32℃良东南风 || 周三(08-05) | 小雨转阴 | 22/32℃良南风 || 周四(08-06) | 小雨 | 22/32℃良东北风 || 周五(08-07) | 多云转小雨 | 21/33℃良南风 || 周六(08-08) | 小雨 | 21/34℃良西南风 || 周日(08-09) | 多云转小雨 | 21/34℃良南风 || 周一(08-10) | 小雨 | 21/34℃良南风 || 周二(08-11) | 多云转小雨 | 21/33℃良南风 |+-------------+--------------+----------------+

发送邮件

将抓取的数据发送到相应的邮箱中,这里我将内容发送到自己的 QQ 邮箱,发送邮箱详细思路请详见 今天,我用 Python 给武汉人民发一封邮件,发送邮件代码如下:

实现代码:

# 收件人    receiver = receiver    mail_title = '小姐姐,请查收今天以及往后15天的天气预报,愿你三冬暖,春不寒'    mail_body = str(msg)    # 创建一个实例    message = MIMEText(mail_body, 'plain', 'utf-8')  # 邮件正文   # (plain表示mail_body的内容直接显示,也可以用text,则mail_body的内容在正文中以文本的形式显示,需要下载)    # 邮件的发件人  message['From'] = sender     # 邮件的收件人  message['To'] = receiver    # 邮件主题    message['Subject'] = Header(mail_title, 'utf-8')    # 创建发送邮件连接    smtp = smtplib.SMTP_SSL("smtp.qq.com", 465)    # 连接发送邮件的服务器    smtp.connect(smtpserver)    # 登录到邮件服务器    smtp.login(username, password)    # 填入邮件的相关信息并发送    smtp.sendmail(sender, receiver, message.as_string())
smtp.quit()

调用发送邮件方法

if __name__ == '__main__':    sender = 'XXX@qq.com'    # 发件人邮箱的SMTP服务器(即sender的SMTP服务器)    smtpserver = 'smtp.qq.com'    # 发件人邮箱的用户名和授权码(不是登陆邮箱的密码)    username = 'XXX'    # 邮箱授权码    password = 'XXXXXXXXX'    url1 = 'https://tianqi.so.com/weather/'    receiver_list ='XXX@qq.com'    tb = get_Data(url1) #获得每一个用户的数据    send_mail(tb,receiver_list) #发送邮件

发送结果如下:

da205b4245bcfdde0281a167cec243d1.webp

总结

今天的文章主要是使用 Python 爬虫和邮件发送功能两者结合使用的场景,如果学废的小伙伴请 扣 1,咱们明天见!

PS公号内回复「Python」即可进入Python 新手学习交流群,一起 100 天计划!


老规矩,兄弟们还记得么,右下角的 “在看” 点一下如果感觉文章内容不错的话,记得分享朋友圈让更多的人知道!

ac2cf3def535f516e7f4505174827870.webp72238490c1678c6ac82570fa649ef625.webp

代码获取方式

识别文末二维码,回复:200730

浏览 7
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报