使用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之使用Python操作数据库(1)
Nov 25 Python
将Django使用的数据库从MySQL迁移到PostgreSQL的教程
Apr 11 Python
[原创]windows下Anaconda的安装与配置正解(Anaconda入门教程)
Apr 05 Python
python中正则表达式 re.findall 用法
Oct 23 Python
使用python对多个txt文件中的数据进行筛选的方法
Jul 10 Python
Python closure闭包解释及其注意点详解
Aug 28 Python
Python中注释(多行注释和单行注释)的用法实例
Aug 28 Python
Python 正则表达式爬虫使用案例解析
Sep 23 Python
Django文件上传与下载(FileFlid)
Oct 06 Python
python实现梯度下降算法的实例详解
Aug 17 Python
python使用XPath解析数据爬取起点小说网数据
Apr 22 Python
关于Python使用turtle库画任意图的问题
Apr 01 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创建多级目录代码
2008/06/05 PHP
php简单实现数组分页的方法
2016/04/30 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
php+js实现的无刷新下载文件功能示例
2019/08/23 PHP
Jquery 数据选择插件Pickerbox使用介绍
2012/08/24 Javascript
『JavaScript』限制Input只能输入数字实现思路及代码
2013/04/22 Javascript
node.js使用nodemailer发送邮件实例
2014/03/10 Javascript
JavaScript中的比较操作符>、=、
2014/12/31 Javascript
简介JavaScript中valueOf()方法的使用
2015/06/05 Javascript
JS组件系列之Bootstrap Icon图标选择组件
2016/01/28 Javascript
jQ处理xml文件和xml字符串的方法(详解)
2016/11/22 Javascript
ES6中的箭头函数实例详解
2017/04/06 Javascript
react-router JS 控制路由跳转实例
2017/06/15 Javascript
Vue 2.0的数据依赖实现原理代码简析
2017/07/10 Javascript
本地搭建微信小程序服务器的实现方法
2017/10/27 Javascript
关于react中组件通信的几种方式详解
2017/12/10 Javascript
vue生命周期和react生命周期对比【推荐】
2018/09/19 Javascript
浅谈vuex actions和mutation的异曲同工
2018/12/13 Javascript
JS数组中对象去重操作示例
2019/06/04 Javascript
layui table 表格上添加日期控件的两种方法
2019/09/28 Javascript
js判断非127开头的IP地址的实例代码
2020/01/05 Javascript
Python 文件操作的详解及实例
2017/09/18 Python
python 用下标截取字符串的实例
2018/12/25 Python
python utc datetime转换为时间戳的方法
2019/01/15 Python
树莓派与PC端在局域网内运用python实现即时通讯
2019/06/22 Python
Python matplotlib学习笔记之坐标轴范围
2019/06/28 Python
python打印直角三角形与等腰三角形实例代码
2019/10/20 Python
Python模拟伯努利试验和二项分布代码实例
2020/05/27 Python
Pycharm中配置远程Docker运行环境的教程图解
2020/06/11 Python
Python datetime 如何处理时区信息
2020/09/02 Python
Html5页面二次分享的实现
2018/07/30 HTML / CSS
Linux的主要特性
2014/10/06 面试题
安全生产管理合理化建议书
2014/03/12 职场文书
医学生职业生涯规划书范文
2014/03/13 职场文书
小学生学雷锋演讲稿
2014/04/25 职场文书
2015年春训学习心得体会范文
2015/03/09 职场文书