使用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操作ssh实现服务器日志下载的方法
Jun 03 Python
Python中文字符串截取问题
Jun 15 Python
Python计算一个文件里字数的方法
Jun 15 Python
在Python中使用zlib模块进行数据压缩的教程
Jun 26 Python
Django框架下在URLconf中指定视图缓存的方法
Jul 23 Python
Python实现的中国剩余定理算法示例
Aug 05 Python
wxPython实现窗口用图片做背景
Apr 25 Python
python解决字符串倒序输出的问题
Jun 25 Python
python中的常量和变量代码详解
Jul 25 Python
python中的&&及||的实现示例
Aug 07 Python
opencv-python的RGB与BGR互转方式
Jun 02 Python
解析python中的jsonpath 提取器
Jan 18 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
浅谈Windows下 PHP4.0与oracle 8的连接设置
2006/10/09 PHP
PHP Smarty生成EXCEL文档的代码
2008/08/23 PHP
php实现邮件发送并带有附件
2014/01/24 PHP
php将session放入memcached的设置方法
2014/02/14 PHP
php通过asort()给关联数组按照值排序的方法
2015/03/18 PHP
使用纯php代码实现页面伪静态的方法
2015/07/25 PHP
PHP验证类的封装与使用方法详解
2019/01/10 PHP
零基础学JavaScript最新动画教程+iso光盘下载
2008/01/22 Javascript
javascript 获取元素位置的快速方法 getBoundingClientRect()
2009/11/26 Javascript
HTTP 304错误的详细讲解
2013/11/13 Javascript
jQuery实现按钮的点击 全选/反选 单选框/复选框 文本框 表单验证
2015/06/25 Javascript
javascript中setTimeout使用指南
2015/07/26 Javascript
学习Javascript面向对象编程之封装
2016/02/23 Javascript
AngularJS压缩JS技巧分析
2016/11/08 Javascript
bootstrap提示标签、提示框实现代码
2016/12/28 Javascript
js实现移动端微信页面禁止字体放大
2017/02/16 Javascript
Angular-Ui-Router+ocLazyLoad动态加载脚本示例
2017/03/02 Javascript
Vue 组件间的样式冲突污染
2017/08/31 Javascript
jQuery UI 实例讲解 - 日期选择器(Datepicker)
2017/09/18 jQuery
JavaScript文本特效实例小结【3个示例】
2018/12/22 Javascript
解决layui表格的表头不滚动的问题
2019/09/04 Javascript
原生JavaScript实现的无缝滚动功能详解
2020/01/17 Javascript
Angular进行简单单元测试的实现方法实例
2020/08/16 Javascript
Python中类的初始化特殊方法
2017/12/01 Python
python3中os.path模块下常用的用法总结【推荐】
2018/09/16 Python
解决python opencv无法显示图片的问题
2018/10/28 Python
Python3.0中普通方法、类方法和静态方法的比较
2019/05/03 Python
python提取log文件内容并画出图表
2019/07/08 Python
Python数据可视化 pyecharts实现各种统计图表过程详解
2019/08/15 Python
python实现tail实时查看服务器日志示例
2019/12/24 Python
Python tkinter和exe打包的方法
2020/02/05 Python
基于python的docx模块处理word和WPS的docx格式文件方式
2020/02/13 Python
python交互模式基础知识点学习
2020/06/18 Python
民族团结先进个人事迹材料
2014/06/02 职场文书
2015年高中班主任工作总结
2015/04/30 职场文书
十大最强电系宝可梦,阿尔宙斯电系之一,第七被称为雷神
2022/03/18 日漫