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 &命令。
源码:
