使用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编程开发之textwrap文本样式处理技巧
Nov 13 Python
详解Python文本操作相关模块
Jun 22 Python
python扫描proxy并获取可用代理ip的实例
Aug 07 Python
python 每天如何定时启动爬虫任务(实现方法分享)
May 21 Python
python实现批量解析邮件并下载附件
Jun 19 Python
Python基于Tkinter模块实现的弹球小游戏
Dec 27 Python
Python任意字符串转16, 32, 64进制的方法
Jun 12 Python
python读取图片的方式,以及将图片以三维数组的形式输出方法
Jul 03 Python
Python正则表达式匹配日期与时间的方法
Jul 07 Python
python自动分箱,计算woe,iv的实例代码
Nov 22 Python
Python 窗体(tkinter)下拉列表框(Combobox)实例
Mar 04 Python
python从ftp获取文件并下载到本地
Dec 05 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 MemCached高级缓存配置图文教程
2010/08/05 PHP
PHP 第一节 php简介
2012/04/28 PHP
PHP获取当前日期及本周一是几月几号的方法
2017/03/28 PHP
PHP用continue跳过本次循环中剩余代码的注意点
2017/06/27 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
几个高效,简洁的字符处理函数
2007/04/12 Javascript
return false;和e.preventDefault();的区别
2010/07/11 Javascript
javascript 隔行换色函数代码
2010/10/24 Javascript
javascript右下角弹层及自动隐藏(自己编写)
2013/11/20 Javascript
javascript学习笔记(三)BOM和DOM详解
2014/09/30 Javascript
jQuery验证插件 Validate详解
2014/11/20 Javascript
javascript倒计时效果实现
2015/11/12 Javascript
基于JavaScript实现鼠标箭头移动图片跟着移动
2016/08/30 Javascript
JavaScript利用Date实现简单的倒计时实例
2017/01/12 Javascript
JavaScript中的return布尔值的用法和原理解析
2017/08/14 Javascript
vue 弹框产生的滚动穿透问题的解决
2018/09/21 Javascript
小程序云开发实战小结
2018/10/25 Javascript
vue props对象validator自定义函数实例
2019/11/13 Javascript
[01:08:09]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第二局
2016/03/02 DOTA
[47:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[05:31]干嘛呢兄弟!DOTA2 TI9语音轮盘部分出处
2019/05/14 DOTA
详解Python在七牛云平台的应用(一)
2017/12/05 Python
利用python编写一个图片主色转换的脚本
2017/12/07 Python
flask session组件的使用示例
2018/12/25 Python
python 使用cx-freeze打包程序的实现
2020/03/14 Python
python mysql自增字段AUTO_INCREMENT值的修改方式
2020/05/18 Python
python中的unittest框架实例详解
2021/02/05 Python
Kipling意大利官网:世界著名的时尚休闲包袋品牌
2019/06/05 全球购物
后勤人员自我鉴定
2013/10/20 职场文书
团员的自我评价
2013/12/01 职场文书
教师节学生演讲稿
2014/09/03 职场文书
自我查摆剖析材料
2014/10/11 职场文书
2014年企业员工工作总结
2014/12/09 职场文书
2014年幼儿园班级工作总结
2014/12/17 职场文书
导游词之徐州云龙湖
2019/11/19 职场文书
Go语言实现Snowflake雪花算法
2021/06/08 Golang