itchat实现微信定时发送天气情况

说干就干,首先得爬取天气信息,这里我直接调用了一个返回天气信息的,对这个url访问,我们可以得到json数据,对这个数据进行解析,我们就可以得到所需要的信息。于是我用了postman进行访问,可以看到,我们需要的正是forecast这个键所对的值信息。当然,这里面有很多天的数据,然而,过于远的时间气候预测准确率可能会不高,所以我只获取今日和明日的信息。

现在,我们对返回的json数据进行解析,获取我们需要的信息。json就是列表、字典的嵌套,我们只要使用对列表和字典一样的操作就可从中获取数据,这个很简单的。

import requests
import json

url=http://t.weather.sojson.com/api/weather/city/101110101
headers = {User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64; rv:64.0) Gecko/20100101 Firefox/64.0}
response = requests.get(url, headers=headers)
data = json.loads(response.text)

# 今日信息
today = data[data][forecast][0][ymd]
today_hightem = data[data][forecast][0][high]
today_lowtem = data[data][forecast][0][low]
today_win = data[data][forecast][0][fx]+ +data[data][forecast][0][fl]
today_wea = data[data][forecast][0][type]
notice = data[data][forecast][0][notice]

# 明日信息
tomorrow = data[data][forecast][1][ymd]
tomorrow_hightem = data[data][forecast][1][high]
tomorrow_lowtem = data[data][forecast][1][low]
tomorrow_win = data[data][forecast][1][fx] +   + data[data][forecast][1][fl]
tomorrow_wea = data[data][forecast][1][type]
today_data = [+today +] + 
     + 温度: + today_hightem  + / + today_lowtem + 
     + 天气: + today_wea + 
     + 风力: + today_win + 


tomorrow_data = [+tomorrow +] + 
     + 温度: + tomorrow_hightem  + / + tomorrow_lowtem + 
     + 天气: + tomorrow_wea + 
     + 风力: + tomorrow_win
notice = 

温馨提醒: + notice
info = [today_data, tomorrow_data, notice]
> pip install itchat    # windows安装
$ pip3 install itchat    # linux安装

下面,我们写一个定时功能,获取系统时间,当系统时间与我们设定的相同时,开始发送消息。貌似有个datatime可以干这事,所以我们可以不用做这个繁琐的事了,能简单就简单。

import datetime

TIME = 090000    # 这里你设置自己需要的时间090000代表9时0分0秒
time = str(datetime.datetime.now().strftime(%H%M%S))
if time == TIME:
   run()       # 执行代码

代码写好,下面我们将其部署到服务器上,可以在windows下使用Xshell登录,或者在linux下使用ssh远程登录。这里我使用的是Xshell,选择哪个问题不大。登陆后,我将脚本放入写在了weather.py文件。注意:下面使用的命令都是在ubuntu下操作的,如果系统是centos,可能会不太一样。

本来想用supervisor使脚本不断运行,但在使用的时候,报了错,显示ERROR(spawn error),查了很多资料,还是没有解决。所以用nohup使脚本不断运行吧!这就很难受。好,我们开始操作!

关于nohup
$ python3 weather.py &    # 将python3 weather.py任务放到后台 ,关闭Xshell,对应的任务也跟着停止。
$ nohup python3 weather.py    # 将python3 weather.py任务放到后台,关闭标准输入,终端不再能够接收任何输入(标准输入),重定向标准输出和标准错误到当前目录下的nohup.out文件,即使关闭xshell退出当前session依然继续运行。
$ nohup python3 weather.py &    # 将python3 weather.py任务放到后台,但是依然可以使用标准输入,终端能够接收任何输入,重定向标准输出和标准错误到当前目录下的nohup.out文件,即使关闭xshell退出当前session依然继续运行。

我们使用nohup python3 weather.py &命令。

源码:

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