6月17日22分25分,四川省宜宾市长宁县发生了6.0级地震,成都高新减灾研究所与应急管理部门联合建设的大陆地震预警网成功预警本次地震,提前10秒向宜宾市预警,提前61秒向成都预警。

虽然自己还不能写出这么牛逼的系统,但是今天我想结合自己学到的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())}。

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 -= 6msg = 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.结果展示

4.总结

我一直认为语言只是工具,只有用它来做点具体的事,才体现出它的价值。今天这个项目用到了Python的爬虫知识,没有用大家讨厌的正则表达式,而是用一种新的方式解析库,实现对HTML的解析和提取信息,最后又用到前面项目用过的wxpy库,实现了全部功能。

用python获取宜宾市地震信息相关推荐

  1. python 读取地震道头数据_使用python获取(宜宾市地震信息)地震信息

    6月17日22分25分,四川省宜宾市长宁县发生了6.0级地震,成都高新减灾研究所与应急管理部门联合建设的大陆地震预警网成功预警本次地震,提前10秒向宜宾市预警,提前61秒向成都预警. 虽然自己还不能写 ...

  2. python获取系统硬件信息

    python获取系统硬件信息 github项目 https://github.com/giampaolo/psutil cpu,内存,etc.

  3. Python获取电脑硬件信息及状态的实现方法

    From: http://www.jb51.net/article/54470.htm 这篇文章主要介绍了Python获取电脑硬件信息及状态的实现方法,是一个很实用的技巧,需要的朋友可以参考下 本文以 ...

  4. 用Python获取照片GPS信息

    用Python获取照片GPS信息 注意事项: 1.调用了百度地图的接口. 2.能够获取信息的照片是本身就带有这些信息的,只不过我们把它查出来了而已. 3.如果是微信接收到的非原图的照片.拍摄时没开定位 ...

  5. (1)python pyinstaller打包exe添加版本信息(2)python获取exe版本信息(3)pyqt5开发exe添加检查版本更新功能

    笔者总结不容易点个关注吧    一键三联哦!       感谢您! python pyinstaller打包exe添加版本信息 打包并添加版本信息 注意!这里有个坑 如果第二次要修改版权信息 要将fi ...

  6. python获取电脑硬件信息_Python实现的读取电脑硬件信息功能示例

    本文实例讲述了Python实现的读取电脑硬件信息功能.分享给大家供大家参考,具体如下: 上学那会,老师让我用java获取电脑硬件信息,CPU, 硬盘,MAC等,那个时候感觉搞了好久...... 今天, ...

  7. Python获取磁盘使用信息,python获取GPU信息,python根据进程号获取进程信息,pynvml 获取GPU信息,psutil 获取进程信息,系统信息等

    一.工具:psutil模块 psutil是一个跨平台模块,试用相应方法可以直接获取计算机CPU,内存,磁盘,网络等资源使用情况:可以使用我们学习知识与这模块用来做系统监控,性能分析:如果大家熟悉Lin ...

  8. Python 获取旅游景点信息及评论并作词云、数据可视化

    正所谓:有朋自远方来,不亦乐乎?有朋友来找我们玩,是一件很快乐的事情,那么我们要尽地主之谊,好好带朋友去玩耍!那么问题来了,什么时候去哪里玩最好呢,哪里玩的地方最多呢? 今天将手把手教你使用线程池爬取 ...

  9. 用Python获取Linux资源信息的三种方法

    方法一:psutil模块 #!usr/bin/env python # -*- coding: utf-8 -*-import socket import psutil class NodeResou ...

最新文章

  1. 2021CCF颁奖典礼首次多平台网络直播,致敬获得者!CCF杰出工程师
  2. vue html5 picker,基于vue的picker组件
  3. mybatis返回null_面试官:你分析过mybatis工作原理吗?
  4. mysql mos login_MySQL 中常用的函数
  5. thinkphp图片加载_标题栏ico展示
  6. 随机生成一组不重复的随机数组
  7. IDEA下的第一个springBoot
  8. Python数据挖掘-词频统计-实现
  9. Codeforces Round #419 Div. 1
  10. 重复insmod同一个模块导致段错误
  11. VB添加TTS语音合成
  12. cadence导生产文件_【分享】写了个Allegro导出bom和坐标文件的教程, 仅供参考~
  13. 集线器与交换机的区别
  14. localhost访问不了的解决方法
  15. JS_鼠标移入移出触发事件
  16. Looksery Cup 2015 F. Yura and Developers(单调栈+二分+分治)(难*)
  17. ggplot2画图教程之Pathway富集分析(气泡图)
  18. 文献阅读:DeepLigand: accurate prediction of MHC class I ligands using peptide embedding
  19. 用花生壳3分钟搭建自己的服务器(Windows10)
  20. 数学建模——一元线性回归

热门文章

  1. Java--Stream流详解
  2. 中国计算机学会青年精英大会,中国计算机学会YOCSEF二十周年庆典暨2018 CCF青年精英大会召开...
  3. 普通程序员在大数据时代如何做技术的掌控者
  4. 竞逐“AI医疗影像第一股”,万亿级赛道数坤科技有何“戏码”?
  5. 易语言API hook 实现动态类名
  6. ROS2中用MoveIt2控制自己的舵机机械手(5)
  7. 测试人员如何做不漏测?这7点就够~
  8. Java图片合成、base64转换
  9. 人这辈子应该这样活,极简主义生活方式
  10. python中浮点数间运算存在不确定尾数_python 浮点数类型