- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章基于Python实现定时自动给微信好友发送天气预报由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
效果图 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
from
wxpyimport
*
import
requests
from
datetimeimport datetime
import
time
from
apscheduler.schedulers.blockingimport blockingscheduler
#定时框架
bot
=
bot(cache_path
=
true)
tuling
=
tuling(api_key
=
你的api')
#机器人api
def
send_weather(location):
#准备url地址
path
=
'http://api.map.baidu.com/telematics/v3/weather?location=%s&output=json&ak=tuegdhcvwi6forqnlm0qmxxy9n0okoiq&callback=?'
url
=
path
%
location
response
=
requests.get(url)
result
=
response.json()
#如果城市错误就按照濮阳发送天气
if
result[
'error'
] !
=
0
:
location
=
'濮阳'
url
=
path
%
location
response
=
requests.get(url)
result
=
response.json()
str0
=
(
' 早上好!这是今天的天气预报!……机器人:pychatbot\n'
)
results
=
result[
'results'
]
# 取出数据字典
data1
=
results[
0
]
# 取出城市
city
=
data1[
'currentcity'
]
str1
=
' 你的城市: %s\n'
%
city
# 取出pm2.5值
pm25
=
data1[
'pm25'
]
str2
=
' pm值 : %s\n'
%
pm25
# 将字符串转换为整数 否则无法比较大小
if
pm25
=
=
'':
pm25
=
0
pm25
=
int
(pm25)
# 通过pm2.5的值大小判断污染指数
if
0
<
=
pm25 <
35
:
pollution
=
'优'
elif
35
<
=
pm25 <
75
:
pollution
=
'良'
elif
75
<
=
pm25 <
115
:
pollution
=
'轻度污染'
elif
115
<
=
pm25 <
150
:
pollution
=
'中度污染'
elif
150
<
=
pm25 <
250
:
pollution
=
'重度污染'
elif
pm25 >
=
250
:
pollution
=
'严重污染'
str3
=
' 污染指数: %s\n'
%
pollution
result1
=
results[
0
]
weather_data
=
result1[
'weather_data'
]
data
=
weather_data[
0
]
temperature_now
=
data[
'date'
]
str4
=
' 当前温度: %s\n'
%
temperature_now
wind
=
data[
'wind'
]
str5
=
' 风向 : %s\n'
%
wind
weather
=
data[
'weather'
]
str6
=
' 天气 : %s\n'
%
weather
str7
=
' 温度 : %s\n'
%
data[
'temperature'
]
message
=
data1[
'index'
]
str8
=
' 穿衣 : %s\n'
%
message[
0
][
'des'
]
str9
=
' 我很贴心: %s\n'
%
message[
2
][
'des'
]
str10
=
' 运动 : %s\n'
%
message[
3
][
'des'
]
str11
=
' 紫外线 : %s\n'
%
message[
4
][
'des'
]
str
=
str0
+
str1
+
str2
+
str3
+
str4
+
str5
+
str6
+
str7
+
str8
+
str9
+
str10
+
str11
return
str
#好友列表
my_friends
=
[]
my_friends
=
bot.friends()
my_friends.pop(
0
)
#发送函数
def
send_message():
#给全体好友发送
for
friendin my_friends:
friend.send(send_weather(friend.city))
#发送成功通知我
bot.file_helper.send(send_weather(
'濮阳'
))
bot.file_helper.send(
'发送完毕'
)
#定时器
print
(
'star'
)
sched
=
blockingscheduler()
sched.add_job(send_message,
'cron'
,month
=
'1-12'
,day
=
'1-31'
,hour
=
5
,minute
=
30
)
sched.start()
|
具体操作:
首先导入wxpy、图灵机器人和定时器apscheduler,定时器用来定时群发.
具体pip操作建议百度.
使用百度的一个天气接口得到json数据.
主要思路:
1.从wxpy获取好友列表 。
2.创建定时器 。
3.定时器触发函数 。
4.函数执行,遍历好友列表 。
5.好友对象执行带参函数,参数为该好友城市 。
6.函数中请求百度天气接口,得到该好友对应天气数据,解析处理数据,发送天气信息,完成该对象发送.
7.遍历结束,发送完毕 。
缺陷:打包为exe文件之后启动失败,原因是定时器找不到trigger,要想解决需要查看apscheduler相关资料.
解决方法:换一种定时器.
编译器上正常执行.
打包为exe之后,可以很方便发给别人使用。扫码登录后每天早上5:30会自动给所有好友发送效果图中的天气预报.
ps:下面看下python实现微信定时发送天气预报 。
schedule实现定时 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
import
requests
from
requests
import
exceptions
from
urllib.request
import
urlopen
from
bs4
import
beautifulsoup
import
re
from
wxpy
import
*
import
schedule
import
time
bot
=
bot(cache_path
=
true)
#登陆网页微信,并保存登陆状态
def
sendblogmsg(content):
#搜索自己的好友,注意中文字符前需要+u
my_friend
=
bot.friends().search(u
'卿尘'
)[
0
]
my_friend.send(content)
#my_group = bot.groups().search(u'卿尘')[0]
#my_group.send(content) #发送天气预报
def
job():
resp
=
urlopen(
'http://www.weather.com.cn/weather/101010100.shtml'
)
soup
=
beautifulsoup(resp,
'html.parser'
)
tagtoday
=
soup.find(
'p'
,
class_
=
"tem"
)
#第一个包含class="tem"的p标签即为存放今天天气数据的标签
try
:
temperaturehigh
=
tagtoday.span.string
#有时候这个最高温度是不显示的,此时利用第二天的最高温度代替。
except
attributeerror as e:
temperaturehigh
=
tagtoday.find_next(
'p'
,
class_
=
"tem"
).span.string
#获取第二天的最高温度代替
temperaturelow
=
tagtoday.i.string
#获取最低温度
weather
=
soup.find(
'p'
,
class_
=
"wea"
).string
#获取天气
contents
=
'北京'
+
'\n'
+
'最高温度:'
+
temperaturehigh
+
'\n'
+
'最低温度:'
+
temperaturelow
+
'\n'
+
'天气:'
+
weather
# result3 = '最低温度:' + temperaturelow
#print('最低温度:' + temperaturelow)
#print('最高温度:' + temperaturehigh)
# print('天气:' + weather)
sendblogmsg(contents)
#定时
schedule.every().day.at(
"19:20"
).do(job)
#规定每天12:30执行job()函数
while
true:
schedule.run_pending()
#确保schedule一直运行
time.sleep(
1
)
bot.join()
#保证上述代码持续运行
|
end 。
总结 。
以上所述是小编给大家介绍的基于python实现定时自动给微信好友发送天气预报,希望对大家有所帮助,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我网站的支持! 。
原文链接:https://www.jianshu.com/p/2c62e684941 。
最后此篇关于基于Python实现定时自动给微信好友发送天气预报的文章就讲到这里了,如果你想了解更多关于基于Python实现定时自动给微信好友发送天气预报的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在处理一组标记为 160 个组的 173k 点。我想通过合并最接近的(到 9 或 10 个组)来减少组/集群的数量。我搜索过 sklearn 或类似的库,但没有成功。 我猜它只是通过 knn 聚类
我有一个扁平数字列表,这些数字逻辑上以 3 为一组,其中每个三元组是 (number, __ignored, flag[0 or 1]),例如: [7,56,1, 8,0,0, 2,0,0, 6,1,
我正在使用 pipenv 来管理我的包。我想编写一个 python 脚本来调用另一个使用不同虚拟环境(VE)的 python 脚本。 如何运行使用 VE1 的 python 脚本 1 并调用另一个 p
假设我有一个文件 script.py 位于 path = "foo/bar/script.py"。我正在寻找一种在 Python 中通过函数 execute_script() 从我的主要 Python
这听起来像是谜语或笑话,但实际上我还没有找到这个问题的答案。 问题到底是什么? 我想运行 2 个脚本。在第一个脚本中,我调用另一个脚本,但我希望它们继续并行,而不是在两个单独的线程中。主要是我不希望第
我有一个带有 python 2.5.5 的软件。我想发送一个命令,该命令将在 python 2.7.5 中启动一个脚本,然后继续执行该脚本。 我试过用 #!python2.7.5 和http://re
我在 python 命令行(使用 python 2.7)中,并尝试运行 Python 脚本。我的操作系统是 Windows 7。我已将我的目录设置为包含我所有脚本的文件夹,使用: os.chdir("
剧透:部分解决(见最后)。 以下是使用 Python 嵌入的代码示例: #include int main(int argc, char** argv) { Py_SetPythonHome
假设我有以下列表,对应于及时的股票价格: prices = [1, 3, 7, 10, 9, 8, 5, 3, 6, 8, 12, 9, 6, 10, 13, 8, 4, 11] 我想确定以下总体上最
所以我试图在选择某个单选按钮时更改此框架的背景。 我的框架位于一个类中,并且单选按钮的功能位于该类之外。 (这样我就可以在所有其他框架上调用它们。) 问题是每当我选择单选按钮时都会出现以下错误: co
我正在尝试将字符串与 python 中的正则表达式进行比较,如下所示, #!/usr/bin/env python3 import re str1 = "Expecting property name
考虑以下原型(prototype) Boost.Python 模块,该模块从单独的 C++ 头文件中引入类“D”。 /* file: a/b.cpp */ BOOST_PYTHON_MODULE(c)
如何编写一个程序来“识别函数调用的行号?” python 检查模块提供了定位行号的选项,但是, def di(): return inspect.currentframe().f_back.f_l
我已经使用 macports 安装了 Python 2.7,并且由于我的 $PATH 变量,这就是我输入 $ python 时得到的变量。然而,virtualenv 默认使用 Python 2.6,除
我只想问如何加快 python 上的 re.search 速度。 我有一个很长的字符串行,长度为 176861(即带有一些符号的字母数字字符),我使用此函数测试了该行以进行研究: def getExe
list1= [u'%app%%General%%Council%', u'%people%', u'%people%%Regional%%Council%%Mandate%', u'%ppp%%Ge
这个问题在这里已经有了答案: Is it Pythonic to use list comprehensions for just side effects? (7 个答案) 关闭 4 个月前。 告
我想用 Python 将两个列表组合成一个列表,方法如下: a = [1,1,1,2,2,2,3,3,3,3] b= ["Sun", "is", "bright", "June","and" ,"Ju
我正在运行带有最新 Boost 发行版 (1.55.0) 的 Mac OS X 10.8.4 (Darwin 12.4.0)。我正在按照说明 here构建包含在我的发行版中的教程 Boost-Pyth
学习 Python,我正在尝试制作一个没有任何第 3 方库的网络抓取工具,这样过程对我来说并没有简化,而且我知道我在做什么。我浏览了一些在线资源,但所有这些都让我对某些事情感到困惑。 html 看起来
我是一名优秀的程序员,十分优秀!