當前位置:
首頁 > 最新 > 一個小爬蟲(上)

一個小爬蟲(上)

(題圖來自於網路)

有這麼一個需求:要得到某個區域的邊緣坐標點。本文就帶領大家一起來實現這個需求。

step1 需求分析

我們需要獲取某個區域的範圍,在百度地圖上剛好有這個區域的範圍,通過查閱百度地圖查詢得到區域邊緣的源代碼後,發現邊緣點保存在js文件中,我們可以利用Python中的json包,把這些js信息解析出來,進而保存下來。(下圖為百度地圖上標識的區域,以我的母校為例),經過分析網頁源碼,發現區域邊緣上的點,保存在一個js頁面當中。(瀏覽器F12可查看網頁源碼)

step2 數據抓取

首先導入需要使用的Python庫,介紹一下這些庫的作用

requests:根據url將網頁源代碼下載下來

json:用來將網頁中的js內容轉換為Python字典類型

re:正則表達式庫,用於提取網頁中滿足一定規律的內容(比如本案例中的經緯度信息)

pandas:Python中操作結構化數據的程序庫,能夠實現幾乎所有Excel的數據操作功能,本例中,用來結構化經緯度數據

獲取區域的uid

先查看抓取到的uid,這些16進位的字元串是構造用於抓取經緯度信息的一部分,經過驗證,發現選擇其中第一個字元串即可。

我們可以先來查看通過其中第一個字元串抓取到的情況

{"content":{"geo":"412618225.7275,2634141.50233;12620436.14,2635744.108191-12618229.2366,2634972.26759,12618225.7275,2635002.28594,12618227.1548,2635005.75909,12618263.5817,2635013.24391,12618295.9275,2635082.51963,12618301.8005,2635082.54492,12618306.1276,2635141.32619,12618269.1117,2635143.4825,12618264.6473,2635174.57984,12618259.351,2635219.88318,12618568.2984,2635230.62723,12618556.9761,2635367.12823,12618566.7501,2635380.12539,12618593.2436,2635391.57514,12618878.5036,2635441.67687,12618

為了看起來更加直觀,也便於,稍後將經緯度信息提取出來,我們使用json庫將這些數據轉換成Python字典類型

再使用正則表達式來提取經緯度信息,並循環取出其中的每一組經緯度,並把它們轉換成數值型。

將得到的這個列錶轉換為pandas的DataFrame,並給每列命名

以下為tableau繪製的結果:

由於百度地圖展示的坐標和真實的坐標之前有偏移,所以抓取得到的坐標還需要進一步進行轉換才可以,因為坐標是整體偏移的,繪製出的區域形狀是沒有問題的,如果是用這些數據來求區域面積,也是沒有問題的。如果都使用百度坐標,判斷點是否在區域內,也是可以的,前提是都必須使用百度坐標。

今天就寫到這兒吧!

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 公眾號 的精彩文章:

太下飯了,媽媽再也不用擔心你吃得少
《我的前半生》老公可以不要你,但是你不能不要你自己!
雙標+盜圖,簡直溫哥華華文媒體之恥!
關於古錢幣收藏的三個問題

TAG:公眾號 |

您可能感興趣

一個酒鬼四個娃小說
因為一個小小的文弱書生,這個王朝多續命一百多年(上)
《射鵰三部曲》竟有三個小龍女:兩個愛大叔,一個愛小鮮肉
一個上門女婿的一日三餐
我混幣圈的一個多月(上)……
一個媽媽的早上(自白)
一個柚子等於四味葯!全家大小的小毛病都用得上!
一個柚子等於六味葯!全家大小的小毛病都用得上!
中國兩大怪村:一個在「天上」,一個在「地下」
一個蠻橫的小孩子
每次一個生活方式的小改變(一)
謎底,第一個登上月球
一個80後大叔的內心獨白(一)……
做一個快樂的小書蟲
三大鐵公雞的面相特點,一個比一個小氣,一個比一個摳門
世界上有兩個穿城而過的大峽谷,一個在盧森堡,一個在黔江
十六女一男生活在一個小鎮上,百年後人丁興旺,建立起了一個國家
31歲魏晨和41歲靳東機場照,竟一個清爽小伙,一個邋遢大爺!
盤點《海賊王》中索隆的四個緋聞女友,緋聞女友一個比一個漂亮
中國只有兩個女人穿上龍袍,一個武則天,另外一個遺臭萬年