这周看到了两个地震新闻,一个是广东广州增城的,另一个是台湾的,因为本人身在广州,而且对于广佛这边的来说地震其实挺突然的对于我们来说,基本在广佛这边很少出现地震,所以我看到广州增城地震也挺吃惊,然后就萌生了爬取地震数据的想法,想了解一下地震高发地。

先来看一个新闻,来自新浪微博官方用户:中国地震台网速报的微博内容,在七夕前一天8月6号10点49分广东广州增城发生2.7级地震,震源深度3千米。

看到这新闻后,我在想的是,哪里可以实时知道地震情况及其相关具体数据呢?哪里可以知道过往的地震历史数据呢?打开谷歌,搜索发现了一个网站:中国地震台网 http://news.ceic.ac.cn/index.html ,这里可以显示查看最新的全球地震信息,还支持地图显示地震信息,历史查询等。

毫无疑问,这句是我们需要的网站,那么我们接下来就来实现最近一年全球所有的地震信息爬取。

网站分析

首先,根据我们设计的需求,我们需要爬取最近一年的所有地震信息,我们找到快捷查询,按时间选择最近一年内地震,即可显示最近一年地震信息。

可以看到一共有59页,所以我们需要分析翻页URL。

试着点击第二页,第三页或尾页,我们可以发现网站的URL是固定不变的,我们大概率可以确定这些数据的加载来源都是通过后台js加载得到的,我门进行再次验证。

我们f12进入谷歌开发者模式,查看选择第二页对应的Elements模块的内容,可以看出 href="javascript:void (0)",很明显是通过js加载的。

我们还可以把网页设置启用或禁用JavaScript,可通过浏览器设置,也可以通过谷歌浏览器插件实现,推荐一下我使用的插件Toggle JavaScript。

比如,我们点一下这个插件便签然后再刷新网站试试,根据页面显示内容足以证明我们的猜想。

接下来,我们就需要找到它的加载js内容文件或者使用最直接的selenium进行实现。

我们在开发者模式中选择Network模块点击XHR,然后点击第二页,第三页,多点几页,在这个过程中你会发现每点击一页增加一个文件。

可以基本确定,这就是我们需要的,点击进去查看,Response有需要的内容,把链接复制到浏览器打开查看。

可以明显看出,这就是我们需要的数据,那么我们可以知道,每一页就是一个这个文件内容,我们只要构造59个这样的URL链接进行爬取即可。

URL链接为:

  • http://www.ceic.ac.cn/ajax/speedsearch?num=6&&page=1&&callback=jQuery18009545762559523003_1565244345462&_=1565244347921

  • http://www.ceic.ac.cn/ajax/speedsearch?num=6&&page=2&&callback=jQuery18009545762559523003_1565244345462&_=1565244352936

  • http://www.ceic.ac.cn/ajax/speedsearch?num=6&&page=3&&callback=jQuery18009545762559523003_1565244345462&_=1565244355966

可以看出,链接中page决定的是页数,后面的_是动态的就是可变的,其他都是不变的,看到这一串东西,如果有经验一看就知道是时间戳了,我们来验证下。

我们可以试着把1565244347921 这串数据变成当前时间看看,这就是我刚刚登录的时间。

分析到这里,我们可以构造爬取URL了,接下来我们进行爬虫代码实现吧。

小提示,其实根据我的验证:

  • http://www.ceic.ac.cn/ajax/speedsearch?num=6&&page=1&&callback=jQuery18009545762559523003_1565244345462&_=1565244347921

  • http://www.ceic.ac.cn/ajax/speedsearch?num=6&&page=1

这两个URL返回的内容是完全一样的,所以我要说啥,你懂得!

爬虫代码实现

爬虫实现的基本三步:

  1. 发起请求,获取网页

  2. 解析提取网页内容

  3. 数据存储

验证是否可获得内容,requests发起请求,cchardet的作用是判断编码类型。

第一步,requests发起请求,进行网页下载。主要定义了ua用户代理,处理了编码类型问题,做了个网页状态码验证是否为200成功,成功则返回页面内容信息。

第二步,进行返回内容解析,很简单,直接把它转为字典形式,根据key提取value即可完成内容解析工作。

第三步,进行数据保存为csv文件格式。

最后,构造59页URL进行爬取即可。

爬取结果如下:

其实还有个更方便直接的方法,就是这个网站还是很友好的,他可以直接保存数据到本地,下载xls数据文件。

不过,这样的话有些信息就得不到了,根据个人所需选择数据获取方式即可。当然这里只是爬取了最近一年的全球地震数据,你也可以根据自己定义时间爬取更多,方式是一样的,授人以鱼不如授人以渔,“渔“已经教给你了,接下来就很容易了。下图就是历史查询,根据自己定义时间等进行数据显示后进行爬取即可。

数据可视分析

首先,查看一下数据。

近一年全球震级级别最高的十个地方

先来看一看近一年全球震级级别最高的十个地方是哪些,关键代码编写如下:

结果可视化如下图:

可以看到,地震级别最高的分别是斐济群岛地区和秘鲁北部分别达到了8.1级和7.8级,值得一说的是第三名也是斐济群岛地区,地震级别同样高达7.8级,其他就是近一年全球地震级别top10都是外国地区。

近一年每个月份发生地震数量对比情况

先来看一看近一年每个月份发生地震数量都是多少,关键代码编写如下:

结果可视化如下图:

可以看到,除去前面的不看,最少发生地震的9月份也达到了70次,最高的6月份和8月份分别达到了恐怖的144和143次之多,也就是等于每一天发生4.8次左右。其中,可以得到近一年中每月平均发生100次左右,平均每天发生3.3次左右。

统计近一年中同一地方发生地震的次数

先来看一看近一年中同一地方发生地震的次数都是多少,关键代码编写如下:

结果可视化如下图:

可以看到,近一年同一地方发生地震次数最多的前十名有9个都是我国的地区,看来我国真是地震高发区啊,而且前两名都是中国四川的,希望地震少点,伤亡少点。

统计近一年中地震级别高低具体的次数

先来看一看近一年中地震级别高低具体的次数都是多少,关键代码编写如下:

结果可视化如下图:

可以看到,最近一年地震级别的占比来看,低级别地震占大多数,而且3.0级地震占了近一年的10.9%,前10名中都不会超过6级地震,大多数围绕在3级左右。

制作近一年地震高频地区词云分析图

关键代码如下:

词云实现图为:

以上,我们爬取并分析了近一年全球的地震信息,让你感受下地震到底离你有多近,中国在地震高频地区top10中占了9个位置。

后台回复关键词【地震爬虫分析】获取源码

往期推荐:

Python线上环境如何优雅地使用日志?

小程序:编程面试题库 加入收藏功能

快速入门 Jupyter notebook

网易云音乐热评的规律,44万条数据告诉你

44万条数据揭秘:如何成为网易云音乐评论区的网红段子手?


java 有没有类似于 requests 爬虫_广州地震?用 Python 爬虫带你了解地震相关推荐

  1. pythonscrapy爬虫_零基础写python爬虫之使用Scrapy框架编写爬虫

    网络爬虫,是在网上进行数据抓取的程序,使用它能够抓取特定网页的HTML数据.虽然我们利用一些库开发一个爬虫程序,但是使用框架可以大大提高效率,缩短开发时间.Scrapy是一个使用Python编写的,轻 ...

  2. 学完python基础开始学爬虫_零基础入门Python爬虫不知道怎么学?这是入门的完整教程...

    这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源.看着文章,打开电脑动手实践,平均45分钟就能学完一节,如果你愿意,今天内你就可以迈入爬 ...

  3. python如何编写爬虫_如何实现一个Python爬虫框架

    image 这篇文章的题目有点大,但这并不是说我自觉对Python爬虫这块有多大见解,我只不过是想将自己的一些经验付诸于笔,对于如何写一个爬虫框架,我想一步一步地结合具体代码来讲述如何从零开始编写一个 ...

  4. 嵩天python爬虫_我自己爬-python爬虫快速入门(一)

    request库 对于轻量级用户,像我一样只是准备写一个搞笑用的程序,requests是很方便的存在. 安装通过pip就不说了 request的几个主要方法 requests.request() 构造 ...

  5. python淘宝爬虫_淘宝直播python爬虫

    淘宝直播爬虫 直接上代码: # !/usr/bin/python # -*- coding: UTF-8 -*- import requests appKey = '12574478' def get ...

  6. 零基础python爬虫_零基础写python爬虫之爬虫编写全记录

    先来说一下我们学校的网站: http://jwxt.sdu.edu.cn:7777/zhxt_bks/zhxt_bks.html 查询成绩需要登录,然后显示各学科成绩,但是只显示成绩而没有绩点,也就是 ...

  7. python爬虫用urllib还是reques,python爬虫中urllib.request和requests有什么区别?

    在学习python爬虫,想要检索request相关内容时,往往会出现urllib.request和requests这两个词,urllib.request和requests都是python爬虫的模块,其 ...

  8. python爬取大众点评评论_python爬虫抓取数据 小试Python——爬虫抓取大众点评上的数据 - 电脑常识 - 服务器之家...

    python爬虫抓取数据 小试Python--爬虫抓取大众点评上的数据 发布时间:2017-04-07

  9. Python爬虫怎么挣钱?解析Python爬虫赚钱方式,轻轻松松月入两万,再也不用为钱发愁啦

    Python爬虫怎么挣钱?解析Python爬虫赚钱方式,想通过自己学到的专业技能赚钱,首先需要掌握Python爬虫技术,专业能力强才能解决开发过程中出现的问题,可以通过Python爬虫外包项目.整合信 ...

  10. Python爬虫怎么挣钱?解析Python爬虫赚钱方式

    Python爬虫怎么挣钱?解析Python爬虫赚钱方式,想过自己学到的专业技能赚钱,首先需要你能够数量掌握Python爬虫技术,专业能力强才能解决开发过程中出现的问题,Python爬虫可以通过Pyth ...

最新文章

  1. linux c编译错误 cmake_symlink_library: System Error: Operation not supported
  2. Go 中string和int类型相互转换
  3. mysql正在运行安全文件怎么办_MySQL服务器运行的安全文件化选项,所以它不能执行该语句什么情? 爱问知识人...
  4. atlas对webpart的增强
  5. 死锁——哲学家就餐问题
  6. 大厂团队Leader实战秘诀:工程师成长最重要的8项技能
  7. log(一)——MDC入门
  8. 个人项目----吴华文
  9. 分糖果 2021T1
  10. 抖音矩阵号搭建及开发思路分享丨抖音矩阵源码丨抖音矩阵号运营
  11. 卡券、直充订单列表(post 表单提交)接口
  12. Windows7系统服务详解
  13. 美国这几年的人口死亡数据
  14. 电容笔适用所有平板吗?值得推荐电容笔排行
  15. 犯罪分子检测--Eye in the Sky: Real-time Drone Surveillance System for Violent Individuals
  16. 小米红米3(全网通/免解锁)解BL锁教程申请BootLoader解锁教程
  17. VS2017环境下配置OpenGL的简单方法(glut,glew,freeglut,gltools)
  18. workflow 添加html,workflow1.html
  19. 视频监控安防平台-GB28181_2016版-注册、心跳、注销
  20. dialogFragment---dialog

热门文章

  1. 如何将 java 项目打包成exe可执行文件
  2. 通用网页广告监测,ADBlock plus算法的C#实现。
  3. selenium抓取苏宁图书
  4. 计算机usb口被禁用怎么解决,电脑USB接口被禁用了,小编教你怎么开启
  5. 高新技术企业认定条件和好处
  6. 读一篇博客,写一段代码,每天写写Python自然就会了,每日Python第1天
  7. web前端开发面试题,都是整理出的精华
  8. Unity3D官方资源完全下载
  9. 使用 apifm-wxapi 开发微信小程序之商品砍价模块
  10. 威客、私活、外包网站的网址收集