使用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验证码识别处理实例
Dec 28 Python
使用Python3 编写简单信用卡管理程序
Dec 21 Python
Python 3中print函数的使用方法总结
Aug 08 Python
pycharm下查看python的变量类型和变量内容的方法
Jun 26 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
Dec 17 Python
itchat-python搭建微信机器人(附示例)
Jun 11 Python
pandas 使用均值填充缺失值列的小技巧分享
Jul 04 Python
关于pymysql模块的使用以及代码详解
Sep 01 Python
Python实现计算图像RGB均值方式
Jun 04 Python
Python使用plt.boxplot() 参数绘制箱线图
Jun 04 Python
去除python中的字符串空格的简单方法
Dec 22 Python
python基于opencv 实现图像时钟
Jan 04 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 curl 抓取AJAX异步内容示例
2014/09/09 PHP
php实现的网络相册图片防盗链完美破解方法
2015/07/01 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
JQuery 风格的HTML文本转义
2009/07/01 Javascript
解决jquery .ajax 在IE下卡死问题的解决方法
2009/10/26 Javascript
jQuery asp.net 用json格式返回自定义对象
2010/04/07 Javascript
jquery中get和post的简单实例
2014/02/04 Javascript
JavaScript针对网页节点的增删改查用法实例
2015/02/02 Javascript
JQuery日期插件datepicker的使用方法
2016/03/03 Javascript
Three.js快速入门教程
2016/09/09 Javascript
NODE.JS跨域问题的完美解决方案
2016/10/20 Javascript
正则表达式基本语法及表单验证操作详解【基于JS】
2017/04/07 Javascript
Angular2使用Angular CLI快速搭建工程(一)
2017/05/21 Javascript
JS跳转手机站url的若干注意事项
2017/10/18 Javascript
jQuery Datatables表头不对齐的解决办法
2017/11/27 jQuery
基于IView中on-change属性的使用详解
2018/03/15 Javascript
node puppeteer(headless chrome)实现网站登录
2018/05/09 Javascript
jquery实现的简单轮播图功能【适合新手】
2018/08/17 jQuery
vue在线动态切换主题色方案
2020/03/26 Javascript
python uuid模块使用实例
2015/04/08 Python
Django URL传递参数的方法总结
2016/08/28 Python
python多线程socket编程之多客户端接入
2017/09/12 Python
Python tkinter的grid布局及Text动态显示方法
2018/10/11 Python
python中前缀运算符 *和 **的用法示例详解
2020/05/28 Python
移动端适配 使px自动转换rem
2019/08/26 HTML / CSS
让ie浏览器成为支持html5的浏览器的解决方法(使用html5shiv)
2014/04/08 HTML / CSS
Gina Bacconi官网:吉娜贝康尼连衣裙和礼服
2018/04/24 全球购物
Laura Geller官网:美国彩妆品牌
2018/12/29 全球购物
教师岗位职责
2013/11/17 职场文书
音乐节策划方案
2014/06/09 职场文书
酒店财务经理岗位职责
2015/04/08 职场文书
新生儿未入户证明
2015/06/23 职场文书
先进工作者主要事迹材料
2015/11/03 职场文书
《自己的花是让别人看的》教学反思
2016/02/19 职场文书
在CSS中使用when/else的方法
2022/01/18 HTML / CSS
Android实现获取短信验证码并自动填充
2023/05/21 Java/Android