使用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实现的简单抽奖系统实例
May 22 Python
Python实现删除当前目录下除当前脚本以外的文件和文件夹实例
Jul 27 Python
Python字符串切片操作知识详解
Mar 28 Python
Python中循环后使用list.append()数据被覆盖问题的解决
Jul 01 Python
Python命名空间的本质和加载顺序
Dec 17 Python
对Python中实现两个数的值交换的集中方法详解
Jan 11 Python
Python Opencv实现图像轮廓识别功能
Mar 23 Python
python中多个装饰器的调用顺序详解
Jul 16 Python
40个你可能不知道的Python技巧附代码
Jan 29 Python
Python爬取12306车次信息代码详解
Aug 12 Python
python3实现飞机大战
Nov 29 Python
Python绘画好看的星空图
Mar 17 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 serialize()与unserialize()的用法
2013/06/05 PHP
php采集内容中带有图片地址的远程图片并保存的方法
2015/01/03 PHP
Zend Framework教程之Zend_Registry对象用法分析
2016/03/22 PHP
Asp.net下利用Jquery Ajax实现用户注册检测(验证用户名是否存)
2010/09/12 Javascript
javaScript同意等待代码实现心得
2011/01/01 Javascript
jQuery对表单元素的取值和赋值操作代码
2011/05/19 Javascript
JS Loading功能的简单实现
2013/11/29 Javascript
原生js的弹出层且其内的窗口居中
2014/05/14 Javascript
BootStrap组件之进度条的基本用法
2017/01/19 Javascript
js监听html页面的上下滚动事件方法
2018/09/11 Javascript
GOJS+VUE实现流程图效果
2018/12/01 Javascript
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
vue实现局部刷新的实现示例
2019/04/16 Javascript
详解50行代码,Node爬虫练手项目
2019/04/22 Javascript
TypeScript开发Node.js程序的方法
2019/04/30 Javascript
vue实现全匹配搜索列表内容
2019/09/26 Javascript
vue3实现v-model原理详解
2019/10/09 Javascript
[00:34]TI7不朽珍藏III——地穴编织者不朽展示
2017/07/15 DOTA
python获取网页状态码示例
2014/03/30 Python
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
Python实现根据IP地址和子网掩码算出网段的方法
2015/07/30 Python
PYTHON压平嵌套列表的简单实现
2016/06/08 Python
Python使用正则表达式过滤或替换HTML标签的方法详解
2017/09/25 Python
Python File(文件) 方法整理
2019/02/18 Python
将Pytorch模型从CPU转换成GPU的实现方法
2019/08/19 Python
Pycharm插件(Grep Console)自定义规则输出颜色日志的方法
2020/05/27 Python
pycharm实现猜数游戏
2020/12/07 Python
Python爬虫分析微博热搜关键词的实现代码
2021/02/22 Python
利用python实现汉诺塔游戏
2021/03/01 Python
Jeep牧马人、切诺基和自由人零配件:4 Wheel Drive Hardware
2017/07/02 全球购物
自我评价怎么写正确呢?
2013/12/02 职场文书
优秀教师感人事迹材料
2014/05/04 职场文书
抗震救灾标语
2014/06/26 职场文书
刑事辩护授权委托书
2014/09/13 职场文书
民事辩护词范文
2015/05/21 职场文书
关于Vue中的options选项
2022/03/22 Vue.js