- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章使用python获取(宜宾市地震信息)地震信息由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
6月17日22分25分,四川省宜宾市长宁县发生了6.0级地震,成都高新减灾研究所与应急管理部门联合建设的大陆地震预警网成功预警本次地震,提前10秒向宜宾市预警,提前61秒向成都预警.
。
。
虽然自己还不能写出这么牛逼的系统,但是今天我想结合自己学到的python知识,用python获取地震信息,然后微信实时推送给你的群组或你的朋友.
1.前期准备 。
1.爬虫基本知识,比如requests库,以及lxml库; 。
2.利用xpath进行html的解析; 。
之前写的一些简单项目,提取页面信息时使用的是正则表达式,但当项目复杂时,用正则表达式比较烦琐,万一有地方写错了,可能导致匹配失败,所以使用正则表达式提取页面信息多多少少还是有些不方便.
通过最近学习,我知道了在网页中可以通过xpath或css选择器来定位一个或多个节点,再调用相应的方法获取它的正文内容或者属性,可以很方便快捷的提取到我们想要的信息.
3.要实现微信实时推送肯定需要用到wxpy库; 。
4.本次项目从中国地震台网爬取地震信息,链接为: http:// news.ceic.ac.cn/index.h tml?time= {int(time.time())}.
。
。
2.代码整合 。
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
|
import
requests, time
from
lxml
import
etree
from
wxpy
import
*
# 微信登陆
bot
=
bot()
# 查找好友
my_friend
=
bot.friends().search(u
'stormwen'
)[
0
]
# 写自己的讨论组名称
with
open
(
'log.txt'
,
'r'
) as f:
rember
=
f.readline()
headers
=
{
'user-agent'
:
'mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/70.0.3538.110 safari/537.36'
,
'cookie'
:
'hm_lvt_e0025cd5d352165f8a646ccea5beb27d=1543211803; hm_lpvt_e0025cd5d352165f8a646ccea5beb27d=1543211803'
,
}
while
true:
try
:
url
=
f
'http://news.ceic.ac.cn/index.html?time={int(time.time())}'
# 请求数据
res
=
requests.get(url, headers
=
headers).text.encode(
'iso-8859-1'
).decode(
'utf8'
)
html_ele
=
etree.html(res)
# 返回列表
res
=
html_ele.xpath(
'//*[@id="news"]//td//text()'
)
# 如果日志为空,发送最新的一条地震信息
if
rember
=
=
'':
msg
=
f
'北京时间:{res[1]},在纬度:{res[2]} ,经度{res[3]} 处发生了{res[0]}级地震,震源深度{res[4]}千米,参考位置:{res[5]}(5分钟更新一次)'
# 发送信息
my_friend.send(msg)
print
(
'日志为空,msg:'
, msg)
# 如果日志非空,就判断是否是最新的,发送日志之后的所有新的数据
else
:
i
=
res.index(rember)
while
i >
1
:
i
-
=
6
msg
=
f
'北京时间:{res[i]},在纬度:{res[i+1]} ,经度{res[i+2]} 处发生了{res[i-1]}级地震,震源深度{res[i+3]}千米,参考位置:{res[i+4]}(5分钟更新一次)'
# 发送信息
my_friend.send(msg)
print
(
'日志非空,msg:'
, msg)
time.sleep(
300
)
rember
=
res[
1
]
# 更新日志(记录最新发送的地震信息)
with
open
(
'log.txt'
,
'w'
) as f:
f.write(res[
1
])
except
:
time.sleep(
60
)
|
3.结果展示 。
。
。
4.总结 。
我一直认为语言只是工具,只有用它来做点具体的事,才体现出它的价值。今天这个项目用到了python的爬虫知识,没有用大家讨厌的正则表达式,而是用一种新的方式解析库,实现对html的解析和提取信息,最后又用到前面项目用过的wxpy库,实现了全部功能.
以上所述是小编给大家介绍的使用python获取(宜宾市地震信息)地震信息,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我网站的支持! 。
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!原文链接:https://zhuanlan.zhihu.com/p/69759095 。
最后此篇关于使用python获取(宜宾市地震信息)地震信息的文章就讲到这里了,如果你想了解更多关于使用python获取(宜宾市地震信息)地震信息的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我是一名优秀的程序员,十分优秀!