使用python获取(宜宾市地震信息)地震信息


Posted in Python onJune 20, 2019

6月17日22分25分,四川省宜宾市长宁县发生了6.0级地震,成都高新减灾研究所与应急管理部门联合建设的大陆地震预警网成功预警本次地震,提前10秒向宜宾市预警,提前61秒向成都预警。

使用python获取(宜宾市地震信息)地震信息

虽然自己还不能写出这么牛逼的系统,但是今天我想结合自己学到的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())}。

使用python获取(宜宾市地震信息)地震信息 

2.代码整合

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.结果展示

使用python获取(宜宾市地震信息)地震信息

4.总结

我一直认为语言只是工具,只有用它来做点具体的事,才体现出它的价值。今天这个项目用到了Python的爬虫知识,没有用大家讨厌的正则表达式,而是用一种新的方式解析库,实现对HTML的解析和提取信息,最后又用到前面项目用过的wxpy库,实现了全部功能。

以上所述是小编给大家介绍的使用python获取(宜宾市地震信息)地震信息,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python 调用DLL操作抄表机
Jan 12 Python
Python编程中装饰器的使用示例解析
Jun 20 Python
python实现括号匹配的思路详解
Aug 23 Python
Ubuntu下Python2与Python3的共存问题
Oct 31 Python
使用Template格式化Python字符串的方法
Jan 22 Python
Python3.5装饰器原理及应用实例详解
Apr 30 Python
使用python 写一个静态服务(实战)
Jun 28 Python
Python爬虫使用代理IP的实现
Oct 27 Python
keras 特征图可视化实例(中间层)
Jan 24 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
Feb 25 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
Feb 26 Python
深入浅析python3 依赖倒置原则(示例代码)
Jul 09 Python
一篇文章了解Python中常见的序列化操作
Jun 20 #Python
python集合是否可变总结
Jun 20 #Python
Django如何自定义model创建数据库索引的顺序
Jun 20 #Python
pyqt 多窗口之间的相互调用方法
Jun 19 #Python
pyqt5 实现多窗口跳转的方法
Jun 19 #Python
快速解决pyqt5窗体关闭后子线程不同时退出的问题
Jun 19 #Python
Pyqt5 实现跳转界面并关闭当前界面的方法
Jun 19 #Python
You might like
用PHP为SHOPEX增加日志功能代码
2010/07/02 PHP
Avengerls vs KG BO3 第二场2.18
2021/03/10 DOTA
JavaScript中的事件处理
2008/01/16 Javascript
JavaScript 开发规范要求(图文并茂)
2010/06/11 Javascript
jquery下利用jsonp跨域访问实现方法
2010/07/29 Javascript
JS实现多物体缓冲运动实例代码
2013/11/29 Javascript
js 异步操作回调函数如何控制执行顺序
2013/12/24 Javascript
document.compatMode的CSS1compat使用介绍
2014/04/03 Javascript
jquery 设置style:display的方法
2015/01/29 Javascript
js控制div弹出层实现方法
2015/05/11 Javascript
JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法
2016/08/19 Javascript
Vue.JS入门教程之列表渲染
2016/12/01 Javascript
Angular.js中下拉框实现渲染html的方法
2017/06/18 Javascript
vue+Vue Router多级侧导航切换路由(页面)的实现代码
2018/12/20 Javascript
Vant+postcss-pxtorem 实现浏览器适配功能
2021/02/05 Javascript
PyQt5 QSerialPort子线程操作的实现
2018/04/21 Python
python中从str中提取元素到list以及将list转换为str的方法
2018/06/26 Python
python按比例随机切分数据的实现
2019/07/11 Python
Django Python 获取请求头信息Content-Range的方法
2019/08/06 Python
Python正则表达式急速入门(小结)
2019/12/16 Python
python中如何进行连乘计算
2020/05/28 Python
Python WebSocket长连接心跳与短连接的示例
2020/11/24 Python
微信小程序实现可实时改变转速的css3旋转动画实例代码
2018/09/11 HTML / CSS
英国电视和家用电器购物网站:rlrdistribution.co.uk
2018/11/20 全球购物
英国信箱在线鲜花速递公司:Bloom & Wild
2019/03/10 全球购物
意大利买卖二手奢侈品网站:LAMPOO
2020/06/03 全球购物
初始化了一个没有run()方法的线程类,是否会出错?
2014/03/27 面试题
北体毕业生求职信
2014/02/28 职场文书
企业趣味活动方案
2014/08/21 职场文书
乡镇领导干部个人对照检查材料思想汇报
2014/09/23 职场文书
党的群众路线教育实践活动个人对照检查材料(四风)
2014/11/05 职场文书
施工现场安全管理制度
2015/08/05 职场文书
爱岗敬业事迹材料
2019/06/20 职场文书
深入理解以DEBUG方式线程的底层运行原理
2021/06/21 Java/Android
javascript条件式访问属性和箭头函数介绍
2021/11/17 Javascript
vue 数字翻牌器动态加载数据
2022/04/20 Vue.js