使用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 相关文章推荐
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
Nov 18 Python
Python进阶_关于命名空间与作用域(详解)
May 29 Python
python爬虫爬取淘宝商品信息
Feb 23 Python
解决pycharm工程启动卡住没反应的问题
Jan 19 Python
使用python socket分发大文件的实现方法
Jul 08 Python
对Python _取log的几种方式小结
Jul 25 Python
pycharm快捷键汇总
Feb 14 Python
pycharm 中mark directory as exclude的用法详解
Feb 14 Python
Pyecharts 动态地图 geo()和map()的安装与用法详解
Mar 25 Python
Keras之自定义损失(loss)函数用法说明
Jun 10 Python
详解使用Python写一个向数据库填充数据的小工具(推荐)
Sep 11 Python
利用python为PostgreSQL的表自动添加分区
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
索尼SONY SRF-S83/84电路分析和打磨
2021/03/02 无线电
比较好用的PHP防注入漏洞过滤函数代码
2012/04/11 PHP
php实现图片缩放功能类
2013/12/18 PHP
php简单实现查询数据库返回json数据
2015/04/16 PHP
PHP将英文数字转换为阿拉伯数字实例讲解
2019/01/28 PHP
List Installed Software Features
2007/06/11 Javascript
Javascript 陷阱 window全局对象
2008/11/26 Javascript
js作用域及作用域链概念理解及使用
2013/04/15 Javascript
js字符串转换成xml对象并使用技巧解读
2013/04/18 Javascript
JS 仿腾讯发表微博的效果代码
2013/12/25 Javascript
Javascript动画的实现原理浅析
2015/03/02 Javascript
常用的Javascript数据验证插件
2015/08/04 Javascript
js实现网页图片延时加载 提升网页打开速度
2016/01/26 Javascript
基于touch.js手势库+zepto.js插件开发图片查看器(滑动、缩放、双击缩放)
2016/11/17 Javascript
javascript基础练习之翻转字符串与回文
2017/02/20 Javascript
微信小程序实现动态设置placeholder提示文字及按钮选中/取消状态的方法
2017/12/14 Javascript
JavaScript实现微信红包算法及问题解决方法
2018/04/26 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
vue检测对象和数组的变化分析
2018/06/30 Javascript
Vue批量图片显示时遇到的路径被解析问题
2019/03/28 Javascript
Vue基于vuex、axios拦截器实现loading效果及axios的安装配置
2019/04/26 Javascript
Vue实现多标签选择器
2019/11/28 Javascript
jquery实现抽奖功能
2020/10/22 jQuery
采用Psyco实现python执行速度提高到与编译语言一样的水平
2014/10/11 Python
Python使用urllib模块的urlopen超时问题解决方法
2014/11/08 Python
python制作图片缩略图
2019/04/30 Python
Python求均值,方差,标准差的实例
2019/06/29 Python
Python实现在线批量美颜功能过程解析
2020/06/10 Python
美国最大点评网站:Yelp
2018/02/14 全球购物
一份软件工程师的面试试题
2016/02/01 面试题
营销总经理的岗位职责
2013/12/15 职场文书
会计专业求职信范文
2014/03/16 职场文书
2014年学习委员工作总结
2014/11/14 职场文书
旷课检讨书范文
2015/01/27 职场文书
Ajax实现三级联动效果
2021/10/05 Javascript
Android RecyclerView实现九宫格效果
2022/06/28 Java/Android