使用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库安装包下载地址与安装过程详细介绍(Windows版)
Nov 02 Python
浅谈pytorch和Numpy的区别以及相互转换方法
Jul 26 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
Oct 14 Python
python画柱状图--不同颜色并显示数值的方法
Dec 13 Python
python调用摄像头拍摄数据集
Jun 01 Python
python如何爬取网站数据并进行数据可视化
Jul 08 Python
python中p-value的实现方式
Dec 16 Python
python3安装OCR识别库tesserocr过程图解
Apr 02 Python
python针对Oracle常见查询操作实例分析
Apr 30 Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
Jun 03 Python
python解压zip包中文乱码解决方法
Nov 27 Python
python读取excel数据并且画图的实现示例
Feb 08 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&&mysql)三
2006/10/09 PHP
linux下使用ThinkPHP需要注意大小写导致的问题
2011/08/02 PHP
php分页代码学习示例分享
2014/02/20 PHP
jquery+php实现导出datatables插件数据到excel的方法
2015/07/06 PHP
php 如何禁用eval() 函数实例详解
2016/12/01 PHP
Yii框架学习笔记之应用组件操作示例
2019/11/13 PHP
云网广告中的代码,提示出错,大家找找
2006/11/21 Javascript
js 判断脚本加载完毕的代码
2011/07/13 Javascript
js怎么终止程序return不行换jfslk
2013/05/30 Javascript
JavaScript中指定函数名称的相关方法
2015/06/04 Javascript
jQuery实现横向带缓冲的水平运动效果(附demo源码下载)
2016/01/29 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
Javascript 函数的四种调用模式
2016/11/05 Javascript
Jquery Easyui进度条组件Progress使用详解(8)
2020/03/26 Javascript
常用JS图片滚动(无缝、平滑、上下左右滚动)代码大全(推荐)
2016/12/20 Javascript
微信小程序 数组中的push与concat的区别
2017/01/05 Javascript
jQuery封装animate.css的实例
2018/01/04 jQuery
nodejs实现套接字服务功能详解
2018/06/21 NodeJs
在vue项目中使用Jquery-contextmenu插件的步骤讲解
2019/01/27 jQuery
在NPM发布自己造的轮子的方法步骤
2019/03/09 Javascript
微信小程序实现Session功能及无法获取session问题的解决方法
2019/05/07 Javascript
JS中的算法与数据结构之二叉查找树(Binary Sort Tree)实例详解
2019/08/16 Javascript
微信小程序实现拖拽功能
2019/09/26 Javascript
Node.js API详解之 zlib模块用法分析
2020/05/19 Javascript
[03:48]显微镜下的DOTA2第四期——TP动作
2014/06/20 DOTA
[01:09]DOTA2次级职业联赛 - ishow.HMM战队宣传片
2014/12/01 DOTA
跟老齐学Python之传说中的函数编写条规
2014/10/11 Python
对pandas的算术运算和数据对齐实例详解
2018/12/22 Python
python flask web服务实现更换默认端口和IP的方法
2019/07/26 Python
Python sqlite3查询操作过程解析
2020/02/20 Python
使用CSS3的appearance属性改变任何元素的浏览器默认风格
2012/12/24 HTML / CSS
迅雷Cued工作心得体会
2014/01/27 职场文书
高三毕业典礼主持词
2014/03/27 职场文书
2015年置业顾问工作总结
2015/04/07 职场文书
高中班主任寄语
2019/06/21 职场文书
2019自荐信该如何写呢?
2019/07/05 职场文书