利用python监控天气
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用python监控天气相关的知识,希望对你有一定的参考价值。
需求:
从天气网站抓取天气,在每天6点,检查当天是否会下雨。如果下雨,邮件提醒带伞。
代码:
[[email protected] ~]# cat weather.py #!/usr/bin/python # -*- coding: UTF-8 -*- import requests,bs4,smtplib def sendMail(body): smtp_server = 'smtp.126.com' from_mail = '[email protected]' mail_pass = 'xxxxxxxxxx' to_mail = ['[email protected]'] 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 b') 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)等系统工具。
效果:
当然,也可以采用发送短信的方式进行通知。
以上是关于利用python监控天气的主要内容,如果未能解决你的问题,请参考以下文章
企业级Python开发大佬利用网络爬虫技术实现自动发送天气预告邮件
企业级Python开发大佬利用网络爬虫技术实现自动发送天气预告邮件