Python+pushpuls+云服务器 自定义微信推送天气预报

小项目目标

(感觉意义在于:手机不常看;在电脑端忙工作时,能在恰当的时候,推送天气预报提醒,便于出行安排)

一、Python获取天气预报信息

1、找寻合适的天气预报网站

天气预报网站很多,找一个较为准确的,页面含有24小时天气预报的, 如:https://www.weaoo.com/shanghai-181282.html

2、Python程序获取天气预报信息

weather_acq.py

import requests
from lxml import html

def spider():
    url = https://www.weaoo.com/shanghai-181282.html
    # url是爬取地址
    resp = requests.get(url)
    # resp是获得请求数据
    resp.encoding = utf-8
    # 根据网页的编码方式确定
    html_data = resp.text
    # 获得html页面文本数据
    selector = html.fromstring(html_data)
    ul_list = selector.xpath(//div[@class="mt1 _24hours"]/ul/li)
    # 根据XPATH路径,确定小时天气预报所在的路径
    
    all = []
    # 创建空数组,为了将天气数据打包
    
    for i in range(1, 6):	# 个人设置,近5小时的天气预报信息
        each_hour = ul_list[i]

        e_h = html.tostring(each_hour, encoding=utf-8).decode(utf-8)
        
        hours = e_h.split(<span)[1].split(>)[1].split(<)[0]

        weather = e_h.split(<span)[3].split(>)[1].split(<)[0]
        temperature = e_h.split(<span)[4].split(>)[1].split(<)[0]
        air = e_h.split(<span)[5].split(")[1]

        each = hours +  ,  + weather +  ,  + temperature +  ,  + air
        
        all.append(each)
        
    return all
    # print all

if __name__ == __main__:
    spider()

运行结果

二、pushplus实现微信推送

1、pushplus(推送加)

    token:token每个人不一样,能代表你的个人开发、账户、后台 title:用于设置你这条消息的标题,如:上海近5小时天气预报 content:推送的实际内容,如上获取的天气信息 template:设置消息模板类型,如html、txt、md、json等

【注】如果是一对多推送,则还有个topic,用于设置群组编号,让别人扫你的二维码加入群组,消息就能同时发送给别人

2、Python进行内容推送

weather_send.py

import smtplib
from email.header import Header
from email.mime.text import MIMEText
import datetime
import weather_acq
import requests

def send_mails():
    now_time = datetime.datetime.now()
    n_time = str(now_time).split( )[1].split(.)[0]
    
    all = weather_acq.spider()
    # 调用天气预报获取程序,获得数据信息
    
    content_wechat = ("<h4>" + all[0] + "</h4>" + "<br>" +
          "<h4>" + all[1] + "</h4>" + "<br>" +
          "<h4>" + all[2] + "</h4>" + "<br>" +
          "<h4>" + all[3] + "</h4>" + "<br>" +
          "<h4>" + all[4] + "</h4>")
    # 对数组数据进行简单处理,弄成html格式
    
    url = http://www.pushplus.plus/send?token=89f932df30554614983812b8036e167a&title=上海天气&content={}&template=html.format(content_wechat)
    reqp = requests.get(url)

if __name__ == __main__:
    send_mails()

运行结果

三、部署云服务器定时任务

参考下面这篇,可以部署定时运行python程序

四、总结

不足与可改进

    1、本文挑选的天气预报网站不一定准确 2、内容可以增加,如湿度、适宜情况等 3、可以加适当判断语句,如穿衣提醒、带伞提醒,或仅当未来有雨才推送信息等

经验分享 程序员 微信小程序 职场和发展