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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

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

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

不知道各位有沒有發(fā)現(xiàn),近期世界各地的地震頻率很頻繁,微博上時(shí)常報(bào)到哪里哪里又發(fā)生地震了。不知道地球是咋了,不過自然會(huì)聯(lián)想到一個(gè)問題:這些地震之間有沒有什么聯(lián)系?

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


打開谷歌,搜索發(fā)現(xiàn)了一個(gè)網(wǎng)站:中國(guó)地震臺(tái)網(wǎng):

url:http://news.ceic.ac.cn/index.html

在該網(wǎng)站可以查看最新的全球地震信息,還支持地圖顯示地震信息,歷史查詢等。


毫無疑問,這句是我們需要的網(wǎng)站,那么我們接下來就來實(shí)現(xiàn)最近一年全球所有的地震信息爬取。

網(wǎng)站分析


首先,根據(jù)我們?cè)O(shè)計(jì)的需求,我們需要爬取最近一年的所有地震信息,我們找到快捷查詢,按時(shí)間選擇最近一年內(nèi)地震,即可顯示最近一年地震信息。



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

試著點(diǎn)擊第二頁,第三頁或尾頁,我們可以發(fā)現(xiàn)網(wǎng)站的URL是固定不變的,我們大概率可以確定這些數(shù)據(jù)的加載來源都是通過后臺(tái)js加載得到的,我門進(jìn)行再次驗(yàn)證。

我們f12進(jìn)入谷歌開發(fā)者模式,查看選擇第二頁對(duì)應(yīng)的Elements模塊的內(nèi)容,可以看出 href="javascript:void (0)",很明顯是通過js加載的。

我們還可以把網(wǎng)頁設(shè)置啟用或禁用JavaScript,可通過瀏覽器設(shè)置,也可以通過谷歌瀏覽器插件實(shí)現(xiàn),推薦一下我使用的插件Toggle JavaScript。


比如,我們點(diǎn)一下這個(gè)插件便簽然后再刷新網(wǎng)站試試,根據(jù)頁面顯示內(nèi)容足以證明我們的猜想。



接下來,我們就需要找到它的加載js內(nèi)容文件或者使用最直接的selenium進(jìn)行實(shí)現(xiàn)。

我們?cè)陂_發(fā)者模式中選擇Network模塊點(diǎn)擊XHR,然后點(diǎn)擊第二頁,第三頁,多點(diǎn)幾頁,在這個(gè)過程中你會(huì)發(fā)現(xiàn)每點(diǎn)擊一頁增加一個(gè)文件。


可以基本確定,這就是我們需要的,點(diǎn)擊進(jìn)去查看,Response有需要的內(nèi)容,把鏈接復(fù)制到瀏覽器打開查看。




可以明顯看出,這就是我們需要的數(shù)據(jù),那么我們可以知道,每一頁就是一個(gè)這個(gè)文件內(nèi)容,我們只要構(gòu)造59個(gè)這樣的URL鏈接進(jìn)行爬取即可。


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決定的是頁數(shù),后面的_是動(dòng)態(tài)的就是可變的,其他都是不變的,看到這一串東西,如果有經(jīng)驗(yàn)一看就知道是時(shí)間戳了,我們來驗(yàn)證下。


我們可以試著把1565244347921 這串?dāng)?shù)據(jù)變成當(dāng)前時(shí)間看看,這就是我剛剛登錄的時(shí)間。



分析到這里,我們可以構(gòu)造爬取URL了,接下來我們進(jìn)行爬蟲代碼實(shí)現(xiàn)吧。


小提示,其實(shí)根據(jù)我的驗(yàn)證

  • 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

這兩個(gè)URL返回的內(nèi)容是完全一樣的,所以我要說啥,你懂得!


爬蟲代碼實(shí)現(xiàn)



爬蟲實(shí)現(xiàn)的基本三步:

  • 發(fā)起請(qǐng)求,獲取網(wǎng)頁

  • 解析提取網(wǎng)頁內(nèi)容

  • 數(shù)據(jù)存儲(chǔ)

  • 驗(yàn)證是否可獲得內(nèi)容,requests發(fā)起請(qǐng)求,cchardet的作用是判斷編碼類型。


    第一步,requests發(fā)起請(qǐng)求,進(jìn)行網(wǎng)頁下載。主要定義了ua用戶代理,處理了編碼類型問題,做了個(gè)網(wǎng)頁狀態(tài)碼驗(yàn)證是否為200成功,成功則返回頁面內(nèi)容信息。



    第二步,進(jìn)行返回內(nèi)容解析,很簡(jiǎn)單,直接把它轉(zhuǎn)為字典形式,根據(jù)key提取value即可完成內(nèi)容解析工作。


    第三步,進(jìn)行數(shù)據(jù)保存為csv文件格式。



    最后,構(gòu)造59頁URL進(jìn)行爬取即可。


    爬取結(jié)果如下:



    其實(shí)還有個(gè)更方便直接的方法,就是這個(gè)網(wǎng)站還是很友好的,他可以直接保存數(shù)據(jù)到本地,下載xls數(shù)據(jù)文件。


    不過,這樣的話有些信息就得不到了,根據(jù)個(gè)人所需選擇數(shù)據(jù)獲取方式即可。當(dāng)然這里只是爬取了最近一年的全球地震數(shù)據(jù),你也可以根據(jù)自己定義時(shí)間爬取更多,方式是一樣的,授人以魚不如授人以漁,“漁“已經(jīng)教給你了,接下來就很容易了。下圖就是歷史查詢,根據(jù)自己定義時(shí)間等進(jìn)行數(shù)據(jù)顯示后進(jìn)行爬取即可。



    數(shù)據(jù)可視分析



    首先,查看一下數(shù)據(jù)。



    近一年全球震級(jí)級(jí)別最高的十個(gè)地方



    先來看一看近一年全球震級(jí)級(jí)別最高的十個(gè)地方是哪些,關(guān)鍵代碼編寫如下:



    結(jié)果可視化如下圖:


    可以看到,地震級(jí)別最高的分別是斐濟(jì)群島地區(qū)和秘魯北部分別達(dá)到了8.1級(jí)和7.8級(jí),值得一說的是第三名也是斐濟(jì)群島地區(qū),地震級(jí)別同樣高達(dá)7.8級(jí),其他就是近一年全球地震級(jí)別top10都是外國(guó)地區(qū)。


    近一年每個(gè)月份發(fā)生地震數(shù)量對(duì)比情況



    先來看一看近一年每個(gè)月份發(fā)生地震數(shù)量都是多少,關(guān)鍵代碼編寫如下:


    結(jié)果可視化如下圖:


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


    統(tǒng)計(jì)近一年中同一地方發(fā)生地震的次數(shù)



    先來看一看近一年中同一地方發(fā)生地震的次數(shù)都是多少,關(guān)鍵代碼編寫如下:


    結(jié)果可視化如下圖:

    可以看到,近一年同一地方發(fā)生地震次數(shù)最多的前十名有9個(gè)都是我國(guó)的地區(qū),看來我國(guó)真是地震高發(fā)區(qū)啊,而且前兩名都是中國(guó)四川的,希望地震少點(diǎn),傷亡少點(diǎn)。


    統(tǒng)計(jì)近一年中地震級(jí)別高低具體的次數(shù)



    先來看一看近一年中地震級(jí)別高低具體的次數(shù)都是多少,關(guān)鍵代碼編寫如下:

    結(jié)果可視化如下圖:

    可以看到,最近一年地震級(jí)別的占比來看,低級(jí)別地震占大多數(shù),而且3.0級(jí)地震占了近一年的10.9%,前10名中都不會(huì)超過6級(jí)地震,大多數(shù)圍繞在3級(jí)左右。

    制作近一年地震高頻地區(qū)詞云分析圖


    關(guān)鍵代碼如下:

    詞云實(shí)現(xiàn)圖為:

    以上,我們爬取并分析了近一年全球的地震信息,讓你感受下地震到底離你有多近,中國(guó)在地震高頻地區(qū)top10中占了9個(gè)位置。


    文中完整代碼和素材,在后臺(tái)回復(fù):地震 即可獲得。

    總結(jié)

    以上是生活随笔為你收集整理的全球地震 Python 爬虫可视化,最频发的地方是这里!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。