为了账号安全,请及时绑定邮箱和手机立即绑定

利用python监控天气

标签:
Python

需求:

从天气网站抓取天气,在每天6点,检查当天是否会下雨。如果下雨,邮件提醒带伞。


代码:

[root@pos ~]# cat weather.py
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import requests,bs4,smtplib
def sendMail(body):
    smtp_server = 'smtp.126.com'
    from_mail = 'pp_1990@126.com'
    mail_pass = 'xxxxxxxxxx'
    to_mail = ['50xxxxxx6@qq.com']
    from_name = 'Weather Monitor'
    subject = 'Raining Today!'
    mail = [
        "From: %s <%s>" % (from_name, from_mail),
        "To: %s" % ','.join(to_mail),
        "Subject: %s" % subject,
        "",
        body
        ]
    msg = '\n'.join(mail)
    try:
        s = smtplib.SMTP_SSL('smtp.126.com',465)
        s.login(from_mail, mail_pass)
        s.sendmail(from_mail, to_mail, msg)
        s.quit()
    except smtplib.SMTPException as e:
        print("Error: "+e)
if __name__ == "__main__":
    headers={'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0'}
    url='http://www.tianqi.com/shanghai/'
    urlhtml=requests.get(url,headers=headers)
    urlhtml.raise_for_status()
    weatherhtml=bs4.BeautifulSoup(urlhtml.text[:],'html.parser')
    weather=weatherhtml.select('div li p')
    for i in range(len(weather)):
        weathnow=weather[i].getText()
        if weathnow == '有雨':
            sendMail("It's rainy today. Remember to bring your umbrella!")
            print("DONE!")

将脚本写入计划任务,每天6点执行一次。

计划任务可以采用Task Scheduler(windows)、launchd(OS X)、cron(linux)等系统工具。

当然,也可以采用发送短信的方式进行通知。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消