使用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 相关文章推荐
python3 实现的人人影视网站自动签到
Jun 19 Python
Python中的迭代器与生成器高级用法解析
Jun 28 Python
Python如何为图片添加水印
Nov 25 Python
python中日志logging模块的性能及多进程详解
Jul 18 Python
python实现类之间的方法互相调用
Apr 29 Python
对Python字符串中的换行符和制表符介绍
May 03 Python
Python实现判断一行代码是否为注释的方法
May 23 Python
浅谈django三种缓存模式的使用及注意点
Sep 30 Python
Python流行ORM框架sqlalchemy安装与使用教程
Jun 04 Python
pandas实现to_sql将DataFrame保存到数据库中
Jul 03 Python
Python StringIO如何在内存中读写str
Jan 07 Python
浅谈Tensorflow加载Vgg预训练模型的几个注意事项
May 26 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实现用户异地登录提醒功能的方法【基于thinkPHP框架】
2018/03/15 PHP
Javascript中匿名函数的多种调用方式总结
2013/12/06 Javascript
Javascript 函数parseInt()转换时出现bug问题
2014/05/20 Javascript
JavaScript实现动态创建CSS样式规则方案
2014/09/06 Javascript
jquery validate.js表单验证入门实例(附源码)
2015/11/10 Javascript
JavaScript生成带有缩进的表格代码
2016/06/15 Javascript
jstree的简单实例
2016/12/01 Javascript
bootstrap侧边栏圆点导航
2017/01/11 Javascript
nodejs入门教程三:调用内部和外部方法示例
2017/04/24 NodeJs
Express之get,pos请求参数的获取
2017/05/02 Javascript
详解Nodejs之npm&package.json
2017/06/15 NodeJs
[js高手之路]从原型链开始图解继承到组合继承的产生详解
2017/08/28 Javascript
ES6中的Promise代码详解
2017/10/09 Javascript
JavaScript反射与依赖注入实例详解
2018/05/29 Javascript
解决vue 引入子组件报错的问题
2018/09/06 Javascript
Element Input组件分析小结
2018/10/11 Javascript
Vue Echarts实现可视化世界地图代码实例
2019/05/07 Javascript
layui lay-verify form表单自定义验证规则详解
2019/09/18 Javascript
vue中进行微博分享的实例讲解
2019/10/14 Javascript
解决Vue-Router升级导致的Uncaught (in promise)问题
2020/08/07 Javascript
python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比
2019/04/15 Python
英国独特的时尚和生活方式品牌:JOY
2018/03/17 全球购物
日本著名化妆品零售网站:Cosme Land
2019/03/01 全球购物
校园新闻广播稿
2014/01/10 职场文书
护士自我评价
2014/02/01 职场文书
篮球赛口号
2014/06/18 职场文书
党员自我对照检查材料
2014/08/19 职场文书
个人对照检查剖析材料
2014/10/13 职场文书
2014年老干部工作总结
2014/11/21 职场文书
给女朋友道歉的话大全
2015/01/20 职场文书
2019学校运动会开幕词
2019/05/13 职场文书
go原生库的中bytes.Buffer用法
2021/04/25 Golang
详解Oracle块修改跟踪功能
2021/11/07 Oracle
Android Studio实现带三角函数对数运算功能的高级计算器
2022/05/20 Java/Android
输入框跟随文字内容适配宽实现示例
2022/08/14 Javascript
clear 万能清除浮动(clearfix:after)
2023/05/21 HTML / CSS