zoukankan      html  css  js  c++  java
  • Python简单程序爬取天气信息,定时发邮件给朋友【高薪必学】



    前段时间看到了这个博客。
    https://blog.csdn.net/weixin_45081575/article/details/102886718。
    他用了request模块,这不巧了么,正好我刚用过。
    他有了smtp模块,这不巧了么,正好我刚用过。
    定时发送邮件,这不巧了么,我不会 。
    PS:另外很多人在学习Python的过程中,往往因为没有好的教程或者没人指导从而导致自己容易放弃,为此我建了个Python全栈开发交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目可拿,不懂的问题有老司机解决哦,一起相互监督共同进步

    整体思路:
    Python语言封装了很多模块帮助你进行通信,所以写起来相对简单。、

    1、https://dev.heweather.com/docs/api/weather和风天气提供了获取天气信息的接口,通过url请求得到json格式的数据。具体用法可以查看链接的api开发文档。
    比如我要获得郑州此时的天气信息,请求方式如下:

    https://free-api.heweather.net/s6/weather/now?location=zhengzhou&key=8a92371afde5490c9ecf3e9346ff189a

    # 得到数据
    def get_sky():
    url='https://free-api.heweather.net/s6/weather/now?location=zhengzhou&key=8a92371afde5490c9ecf3e9346ff189a'
    r=requests.get(url)
    now=json.loads(r.text)
    # print(now)

    a=now['HeWeather6'][0]['basic']
    b=now['HeWeather6'][0]['now']
    stat=''
    stat+="省份:%s<br>"%a['admin_area']
    stat+='城市:%s<br>'%(a['location'])
    stat+='云量: %s<br>'%(b['cloud'])
    stat+='能见度: %s℃<br>'%(b['vis'])
    stat+='体感温度: %s℃<br>'%(b['fl'])
    stat+='温度: %s<br>'%(b['tmp'])
    stat+='风力: %s<br>'%(b['wind_sc'])
    stat+='风向: %s<br>'%(b['wind_dir'])

    return stat
    通过text请求得到页面信息之后,根据返回的json格式解析出每个对应的信息。

    2、利用smtp模块发送邮件,这里弄的比较简单,没有上面那个博客中用到csv文件,他添加了附件,又调用了别的对邮件封装添加附件的函数。这里只用了简单的传字符串。

    # 邮件传输
    def smtp_tran(data):
    print(data)
    msg=MIMEText(data,'html','utf-8')
    HOST='smtp.qq.com'
    SUBJECT='大哥你的天气情况到了'
    FROM='你的qq@qq.com'
    TO='你的qq@qq.com'
    msg['Subject']=SUBJECT
    msg['From']=FROM
    msg['To']=TO
    server=smtplib.SMTP(HOST,25)
    server.set_debuglevel(1) #打印出传递过程
    server.login(FROM,'授权码') #这里填写你邮箱的授权码
    server.sendmail(FROM,[TO],msg.as_string())
    server.quit()
    利用smtp模块封装好的函数就行,直接调用。值得注意的一点是,163,qq等smtp服务需要授权码而不是密码,授权码是什么可以百度。

    3、完整代码

    # 用提供好的api爬取天气数据,然后发送给邮箱
    import requests
    import json
    from email.mime.text import MIMEText
    import smtplib
    # 得到数据
    def get_sky():
    url='https://free-api.heweather.net/s6/weather/now?location=zhengzhou&key=8a92371afde5490c9ecf3e9346ff189a'
    r=requests.get(url)
    now=json.loads(r.text)
    # print(now)
    a=now['HeWeather6'][0]['basic']
    b=now['HeWeather6'][0]['now']
    stat=''
    stat+="省份:%s<br>"%a['admin_area']
    stat+='城市:%s<br>'%(a['location'])
    stat+='云量: %s<br>'%(b['cloud'])
    stat+='能见度: %s<br>'%(b['vis'])
    stat+='体感温度: %s℃<br>'%(b['fl'])
    stat+='温度: %s℃<br>'%(b['tmp'])
    stat+='风力: %s<br>'%(b['wind_sc'])
    stat+='风向: %s<br>'%(b['wind_dir'])

    return stat

    # 邮件传输
    def smtp_tran(data):
    print(data)
    msg=MIMEText(data,'html','utf-8')
    HOST='smtp.qq.com'
    SUBJECT='大哥你的天气情况到了'
    FROM='qq@qq.com'
    TO='qq@qq.com'
    msg['Subject']=SUBJECT
    msg['From']=FROM
    msg['To']=TO
    server=smtplib.SMTP(HOST,25)
    server.set_debuglevel(1)
    server.login(FROM,'yqqrkjmvsiffeaha')
    server.sendmail(FROM,[TO],msg.as_string())
    server.quit()
    smtp_tran(get_sky())
    # print(get_sky(),end='')

    [To]里面可填写多个邮箱,同时发送多个邮件。

    4、此时可以运行发送邮件了,定时发送的思路就是建立个批处理文件,把运行这个代码的语句放进去,每次运行这个批处理文件就等于运行了这个文件。

    批处理文件就是存一堆命令的文件。
    打开任务计划,然后创建任务,定义操作是运行这个批处理文件,触发器是每天早上八点,当然要保证电脑开着。这种方法是Windows的。
    如图所示:


    如下建立好的:


    5、Finally,每天早上八点起得来的话,会发的。
    ——另外很多人在学习Python的过程中,往往因为没有好的教程或者没人指导从而导致自己容易放弃,为此我建了个Python全栈开发交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目可拿,不懂的问题有老司机解决哦,一起相互监督共同进步

    本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

  • 相关阅读:
    Uniapp实现微信小程序云开发
    laravel 打印日志
    windbg 学习笔记
    Spring事务,非事务方法调用事务方法,事务不生效
    MyBatis 流式查询
    写代码有这16个好习惯,可以减少80%非业务的bug
    IDEA 神级插件推荐
    OUTLOOK添加企业邮箱
    Win10环境中MATLAB R2020b安装及破解全过程讲解
    scala function vs method
  • 原文地址:https://www.cnblogs.com/chengxuyuanaa/p/12283536.html
Copyright © 2011-2022 走看看