使用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实现的一个p2p文件传输实例
Jun 04 Python
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
Apr 09 Python
对Python3中的input函数详解
Apr 22 Python
python3 requests中使用ip代理池随机生成ip的实例
May 07 Python
python中使用iterrows()对dataframe进行遍历的实例
Jun 09 Python
使用python对文件中的数值进行累加的实例
Nov 28 Python
python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比
Apr 15 Python
Python实现将蓝底照片转化为白底照片功能完整实例
Dec 13 Python
tensorflow mnist 数据加载实现并画图效果
Feb 05 Python
keras模型保存为tensorflow的二进制模型方式
May 25 Python
基于Python实现的购物商城管理系统
Apr 27 Python
手把手教你怎么用Python实现zip文件密码的破解
May 27 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
基于数据库的在线人数,日访问量等统计
2006/10/09 PHP
在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的运行环境
2016/04/04 PHP
Laravel下生成验证码的类
2017/11/15 PHP
XHTML-Strict 内允许出现的标签
2006/12/11 Javascript
jquery实现邮箱自动填充提示功能
2015/11/17 Javascript
BootStrap Datepicker 插件修改为默认中文的实现方法
2017/02/10 Javascript
Bootstrap3多级下拉菜单
2017/02/24 Javascript
Vue2.0基于vue-cli+webpack父子组件通信(实例讲解)
2017/09/14 Javascript
详解JSONObject和JSONArray区别及基本用法
2017/10/25 Javascript
vue2.0+vuex+localStorage代办事项应用实现详解
2018/05/31 Javascript
Angularjs中的$apply及优化使用详解
2018/07/02 Javascript
Element输入框带历史查询记录的实现示例
2019/01/15 Javascript
nvm、nrm、npm 安装和使用详解(小结)
2019/01/17 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
2019/09/02 Javascript
详谈vue中router-link和传统a链接的区别
2020/07/22 Javascript
你不知道的 TypeScript 高级类型(小结)
2020/08/28 Javascript
Python多线程实例教程
2014/09/06 Python
浅谈Python peewee 使用经验
2017/10/20 Python
Python 3.x 安装opencv+opencv_contrib的操作方法
2018/04/02 Python
在pycharm中使用matplotlib.pyplot 绘图时报错的解决
2020/06/01 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
2020/06/22 Python
Python numpy大矩阵运算内存不足如何解决
2020/11/19 Python
纯css3实现的鼠标悬停动画按钮
2014/12/23 HTML / CSS
初探CSS3中的calc()功能
2015/07/14 HTML / CSS
AmazeUI中各种的导航式菜单与解决方法
2020/08/19 HTML / CSS
ebookers英国:隶属全球最大的在线旅游公司Expedia
2017/12/28 全球购物
速卖通欧盟:Aliexpress EU
2020/08/19 全球购物
会计大学生职业生涯规划书范文
2014/01/13 职场文书
民主生活会整改措施(党员)
2014/09/18 职场文书
导游词范文
2015/02/13 职场文书
保管员岗位职责
2015/02/14 职场文书
2015年生产车间工作总结
2015/04/22 职场文书
idea 在springboot中使用lombok插件的方法
2021/08/02 Java/Android
Win11怎么启动任务管理器?Win11启动任务管理器的几种方法
2021/11/23 数码科技
CSS SandBox应用场景及常见问题
2022/06/25 HTML / CSS
Java代码规范与质量检测插件SonarLint的使用
2022/08/05 Java/Android