溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python爬取全國(guó)2000多個(gè)城市的經(jīng)緯度及geohash編碼

發(fā)布時(shí)間:2020-05-28 18:56:49 來(lái)源:網(wǎng)絡(luò) 閱讀:904 作者:wx5d72071a58c07 欄目:編程語(yǔ)言

如何爬取全國(guó)兩千多個(gè)城市的經(jīng)緯度?其實(shí)找對(duì)了數(shù)據(jù)源就一點(diǎn)也不難。
哪些網(wǎng)站可能會(huì)有全國(guó)所有城市的經(jīng)緯度呢?高德地圖?百度地圖?統(tǒng)計(jì)局?淘寶?……
這次我們來(lái)試試通過(guò)餓了么爬?。?/p>

import requests,csv,Geohash

url='https://www.ele.me/restapi/shopping/v1/cities'
headers={
    'referer': 'https://www.ele.me/home/',
    'user-agent': 'user-agent'
        #user-agent大家改成自己的哈
}

res=requests.get(url,headers=headers)
res_dic=res.json()
# print(type(jsonres))

#爬一個(gè)城市試驗(yàn)一下行不行,不要一上來(lái)就搞個(gè)大的
name=res_dic['A'][0]['name']
print(name)

#沒(méi)問(wèn)題,那就開(kāi)始吧
csv_file=open('城市經(jīng)緯度.csv','w+',newline='',encoding='utf-8')
writer=csv.writer(csv_file)
list_head=['城市','緯度','經(jīng)度','geohash編碼']
writer.writerow(list_head)
m=0
list_cities=[]
list_range=['A','B','C','D','E','F','G','H','J','K','L','M','N','P','Q','R','S','T','W','X','Y','Z']
for alp in list_range:
    for m in range(220):
        try:
            name=res_dic[alp][m]['name']
            latitude=res_dic[alp][m]['latitude']
            longitude=res_dic[alp][m]['longitude']
            geohash=Geohash.encode(latitude,longitude)
            list_cities.append([name,latitude,longitude,geohash])
            m=m+1
        except IndexError:
            pass

for row in list_cities:
    writer.writerow(row)

csv_file.close()

有些同學(xué)可能安裝了geohash,但是python3.7調(diào)不出來(lái)。
別著急,修改一下定義文件試試:

rename the package name to be geohash rather than Geohash and then change init.py to import from .geohash (with a dot in front of the module name) rather than from geohash, the package should work for Python 3.5.2.

按照這個(gè)方法修改文件名稱和 init.py 中的內(nèi)容后,成功!

拿到全國(guó)所有城市的經(jīng)緯度以后,我們能做的還有很多,下期介紹~

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI