日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

全球地震 Python 爬虫可视化,最频发的地方是这里!

發布時間:2023/12/20 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 全球地震 Python 爬虫可视化,最频发的地方是这里! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

不知道各位有沒有發現,近期世界各地的地震頻率很頻繁,微博上時常報到哪里哪里又發生地震了。不知道地球是咋了,不過自然會聯想到一個問題:這些地震之間有沒有什么聯系?

所以,今天就來通過 Python ?爬蟲并可視化近一年全球地震的情況。


打開谷歌,搜索發現了一個網站:中國地震臺網:

url: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返回的內容是完全一樣的,所以我要說啥,你懂得!


爬蟲代碼實現



爬蟲實現的基本三步:

  • 發起請求,獲取網頁

  • 解析提取網頁內容

  • 數據存儲

  • 驗證是否可獲得內容,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 爬虫可视化,最频发的地方是这里!的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。