使用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实现的Excel文件读写类
Jul 30 Python
python中执行shell的两种方法总结
Jan 10 Python
python使用threading获取线程函数返回值的实现方法
Nov 15 Python
python中WSGI是什么,Python应用WSGI详解
Nov 24 Python
python的socket编程入门
Jan 29 Python
Python统计单词出现的次数
Apr 04 Python
浅析Python pandas模块输出每行中间省略号问题
Jul 03 Python
tensorflow 限制显存大小的实现
Feb 03 Python
python小白切忌乱用表达式
May 29 Python
python连接mysql有哪些方法
Jun 24 Python
通过代码实例了解Python sys模块
Sep 14 Python
Python xlrd/xlwt 创建excel文件及常用操作
Sep 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 JSON 数据解析代码
2010/05/26 PHP
PHP中Date()时间日期函数的使用方法小结
2011/04/20 PHP
解决nginx不支持thinkphp中pathinfo的问题
2015/07/21 PHP
Zend Framework实现留言本分页功能(附demo源码下载)
2016/03/22 PHP
程序员的表白神器“520”大声喊出来
2016/05/20 PHP
node.js中Socket.IO的进阶使用技巧
2014/11/04 Javascript
JS数组的常见用法实例
2015/02/10 Javascript
jQuery简单获取键盘事件的方法
2016/01/22 Javascript
javascript常用的设计模式
2017/02/09 Javascript
JS计算输出100元钱买100只鸡问题的解决方法
2018/01/04 Javascript
node内置调试方法总结
2018/02/22 Javascript
Vue 递归多级菜单的实例代码
2019/05/05 Javascript
Vue事件处理原理及过程详解
2020/03/11 Javascript
Vue的自定义组件不能使用click方法的解决
2020/07/28 Javascript
Vue3 响应式侦听与计算的实现
2020/11/11 Javascript
[03:12]完美世界DOTA2联赛PWL DAY7集锦
2020/11/06 DOTA
Python中的字符串类型基本知识学习教程
2016/02/04 Python
Python用imghdr模块识别图片格式实例解析
2018/01/11 Python
python3字符串操作总结
2019/07/24 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
2020/04/08 Python
用python绘制樱花树
2020/10/09 Python
python 爬取免费简历模板网站的示例
2020/09/27 Python
python实现马丁策略回测3000只股票的实例代码
2021/01/22 Python
网络工程专业毕业生推荐信
2013/10/28 职场文书
总经理岗位职责
2013/11/09 职场文书
应届本科生推荐信范文
2013/12/25 职场文书
合作意向书模板
2014/03/31 职场文书
机械工程及其自动化专业求职信
2014/08/08 职场文书
城市轨道交通工程职业生涯规划书范文
2014/09/16 职场文书
律师授权委托书范本
2014/10/07 职场文书
工伤事故赔偿协议书
2014/10/27 职场文书
2015年文员个人工作总结
2015/04/09 职场文书
毕业生自荐求职信书写的技巧
2019/08/26 职场文书
致男子1500米运动员的广播稿
2019/11/08 职场文书
实例讲解Python中sys.argv[]的用法
2021/06/03 Python
详解OpenCV曝光融合
2022/04/29 Python