使用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 相关文章推荐
使用django-suit为django 1.7 admin后台添加模板
Nov 18 Python
Python爬取qq music中的音乐url及批量下载
Mar 23 Python
python 递归深度优先搜索与广度优先搜索算法模拟实现
Oct 22 Python
更改Python的pip install 默认安装依赖路径方法详解
Oct 27 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
Feb 27 Python
django获取from表单multiple-select的value和id的方法
Jul 19 Python
关于Tensorflow使用CPU报错的解决方式
Feb 05 Python
PyCharm MySQL可视化Database配置过程图解
Jun 09 Python
Pycharm github配置实现过程图解
Oct 13 Python
Python高并发和多线程有什么关系
Nov 14 Python
全网最细 Python 格式化输出用法讲解(推荐)
Jan 18 Python
Python干货实战之八音符酱小游戏全过程详解
Oct 24 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 imagecreatetruecolor 创建高清和透明图片代码小结
2010/05/15 PHP
WordPress过滤垃圾评论的几种主要方法小结
2016/07/11 PHP
PHP基于递归算法解决兔子生兔子问题
2018/05/11 PHP
Thinkphp集成抖音SDK的实现方法
2020/04/28 PHP
PHP7 新增功能
2021/03/09 PHP
JavaScript 判断指定字符串是否为有效数字
2010/05/11 Javascript
extjs4 treepanel动态改变行高度示例
2013/12/17 Javascript
Javascript实现Array和String互转换的方法
2015/12/21 Javascript
canvas 绘制圆形时钟
2017/02/22 Javascript
H5实现中奖记录逐行滚动切换效果
2017/03/13 Javascript
解决OneThink中无法异步提交kindeditor文本框中修改后的内容方法
2017/05/05 Javascript
在Js页面通过POST传递参数跳转到新页面详解
2017/08/25 Javascript
深入浅出了解Node.js Streams
2019/05/27 Javascript
bootstrap datepicker的基本使用教程
2019/07/09 Javascript
JS代码触发事件代码实例
2020/01/02 Javascript
vue中touch和click共存的解决方式
2020/07/28 Javascript
Ant-design-vue Table组件customRow属性的使用说明
2020/10/28 Javascript
[04:02]2014DOTA2国际邀请赛 BBC每日综述中国战队将再度登顶
2014/07/21 DOTA
[36:45]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[38:38]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.17
2020/12/18 DOTA
详解Python中的Cookie模块使用
2015/07/06 Python
Python中音频处理库pydub的使用教程
2017/06/07 Python
Python实现的递归神经网络简单示例
2017/08/11 Python
django 修改server端口号的方法
2018/05/14 Python
python+selenium实现自动抢票功能实例代码
2018/11/23 Python
python设置环境变量的作用和实例
2019/07/09 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
2019/10/09 Python
基于python操作ES实例详解
2019/11/16 Python
CSS3中文字镂空、透明值、阴影效果设置示例小结
2016/03/07 HTML / CSS
CSS3制作hover下划线动画
2017/03/27 HTML / CSS
SmartBuyGlasses台湾:名牌眼镜,名牌太阳眼镜及隐形眼镜
2017/01/04 全球购物
英国皇家造币厂:The Royal Mint
2018/10/05 全球购物
医大实习自我鉴定
2013/12/07 职场文书
长城英文导游词
2015/01/30 职场文书
2016年中学端午节主题活动总结
2016/04/01 职场文书
Java界面编程实现界面跳转
2022/06/16 Java/Android