欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python爬蟲(chóng)獲取小區(qū)經(jīng)緯度以及結(jié)構(gòu)化地址

 更新時(shí)間:2018年12月30日 14:08:22   作者:努力學(xué)習(xí)中的阿達(dá)  
這篇文章主要為大家詳細(xì)介紹了python爬蟲(chóng)獲取小區(qū)經(jīng)緯度,以及結(jié)構(gòu)化的地址,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了python爬蟲(chóng)獲取小區(qū)經(jīng)緯度、地址的具體代碼,供大家參考,具體內(nèi)容如下

通過(guò)小區(qū)名稱(chēng)利用百度api可以獲取小區(qū)的地址以及經(jīng)緯度,但是由于api返回的值中的地址形式不同,所以可以首先利用小區(qū)名稱(chēng)進(jìn)行一輪爬蟲(chóng),獲取小區(qū)的經(jīng)緯度,然后再利用經(jīng)緯度Reverse到小區(qū)的結(jié)構(gòu)化的地址。另外小區(qū)名稱(chēng)如果是'...號(hào)‘,可以在爬蟲(chóng)開(kāi)始之前在'號(hào)‘之后加一個(gè)'院‘,得到的精確度更高。這次寫(xiě)到程序更加便于二次利用,只需要給程序傳遞一個(gè)dataframe就可以坐等結(jié)果了。現(xiàn)在程序已經(jīng)寫(xiě)好了,就等接下來(lái)在工作中看看效果如何了。

class GetAddressInfo:
 def __init__(self,df):
 import pandas
 assert type(df) == pandas.core.frame.DataFrame and ('city' in df.columns) and ('name' in df.columns),\
 'The dataframe is not vailid'
 from bs4 import BeautifulSoup 
 from urllib import request
 import re
 import pandas as pd
 import numpy as np
 import urllib.parse as urp
 self.__data__ = df
 def get_address(self):
 import numpy as np
 self.__data__['小區(qū)經(jīng)度'] = np.nan
 self.__data__['小區(qū)緯度'] = np.nan
 self.__data__['小區(qū)地址'] = np.nan
 for i in self.__data__.index:
 self.__data__.loc[i,'小區(qū)緯度'],self.__data__.loc[i,'小區(qū)經(jīng)度'],self.__data__.loc[i,'小區(qū)地址'] =\
      self.__get_neigbour_address__(self.__data__.loc[i,'name'],\
      self.__data__.loc[i,'city'])
 return self.__data__
 def __lat__(self,res):
 try:
 return pd.to_numeric(re.findall('"lat":(.*)',res)[0].split(',')[0])
 except:
 return 0
 def __lng__(self,res):
 try:
 return pd.to_numeric(re.findall('"lng":(.*)',res)[0])
 except:
 return 0
 def __address__(self,res):
 try:
 return re.findall('"address":"(.*)",',res)[0]
 except:
 return 'None'
 
 def __get_neigbour_address__(self,name,city):
 my_ak = ##替換自己的ak
 qurey = urp.quote(name)
 tag = urp.quote('住宅區(qū)')
 try:
 url = 'http://api.map.baidu.com/place/v2/search?query='+qurey+'&tag='+tag+'&region='+urp.quote(city)+'&output=json&ak='+my_ak
 req = request.urlopen(url)
 res = req.read().decode()
 lat = self.__lat__(res)
 lng = self.__lng__(res)
 address = self.__address__(res)
 return lat,lng,address
 except:
 return 0,0,'None'
 
 
class ReverseGetAddress:
 def __init__(self,data):
 assert ('小區(qū)緯度' in data.columns) and ('小區(qū)經(jīng)度' in data.columns) and ('name' in data.columns),\
 'The DataFrame is not vailid'
 from bs4 import BeautifulSoup 
 from urllib import request
 import re
 import pandas as pd
 import numpy as np
 import urllib.parse as urp
 self.__data__ = data
 def __get_address1__(self,url):
 try:
 req = request.urlopen(url)
 res = req.read().decode()
 address = re.findall('address":"(.*?)"',res)[0]
 return address
 except:
 return 'None1'
 def __to_string__(self,arr):
 return str(arr)
 def __get_address2__(self):
 my_ak = ##替換自己的Ak
 base_url1 = 'http://api.map.baidu.com/geocoder/v2/?callback=renderReverse'
 base_url2 = '&location='
 base_url3 = '&pois=0&radius=1&output=json&pois=1&ak='
 url = base_url1+base_url2+self.__data__['小區(qū)緯度'].apply(self.__to_string__)+','\
 +self.__data__['小區(qū)經(jīng)度'].apply(self.__to_string__)+base_url3+my_ak
 return url
 def get_address(self):
 url = self.__get_address2__()
 self.__data__['小區(qū)地址'] = url.apply(self.__get_address1__)
 return self.__data__

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 用Python制作一個(gè)文件加密器

    用Python制作一個(gè)文件加密器

    大家好,本篇文章主要講的是用Python制作一個(gè)文件加密器,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • python使用selenium實(shí)現(xiàn)批量文件下載

    python使用selenium實(shí)現(xiàn)批量文件下載

    這篇文章主要介紹了python使用selenium實(shí)現(xiàn)批量文件下載,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • pytorch中nn.Flatten()函數(shù)詳解及示例

    pytorch中nn.Flatten()函數(shù)詳解及示例

    nn.Flatten是一個(gè)類(lèi),而torch.flatten()則是一個(gè)函數(shù),下面這篇文章主要給大家介紹了關(guān)于pytorch中nn.Flatten()函數(shù)詳解及示例的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • python用正則表達(dá)式提取/匹配中文漢字

    python用正則表達(dá)式提取/匹配中文漢字

    在使用Python的過(guò)程中,由于需求原因,我們經(jīng)常需要在文本或者網(wǎng)頁(yè)元素中用Python正則表達(dá)式匹配中文,下面這篇文章主要給大家介紹了關(guān)于python用正則表達(dá)式提取/匹配中文漢字的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • 詳細(xì)整理python 字符串(str)與列表(list)以及數(shù)組(array)之間的轉(zhuǎn)換方法

    詳細(xì)整理python 字符串(str)與列表(list)以及數(shù)組(array)之間的轉(zhuǎn)換方法

    這篇文章主要介紹了詳細(xì)整理python 字符串(str)與列表(list)以及數(shù)組(array)之間的轉(zhuǎn)換方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • python for循環(huán)輸入一個(gè)矩陣的實(shí)例

    python for循環(huán)輸入一個(gè)矩陣的實(shí)例

    今天小編就為大家分享一篇python for循環(huán)輸入一個(gè)矩陣的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • Python socket模塊實(shí)現(xiàn)的udp通信功能示例

    Python socket模塊實(shí)現(xiàn)的udp通信功能示例

    這篇文章主要介紹了Python socket模塊實(shí)現(xiàn)的udp通信功能,結(jié)合具體實(shí)例形式分析了Python使用socket模塊實(shí)現(xiàn)UDP通信客戶(hù)端與服務(wù)器端相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-04-04
  • tensorflow中的數(shù)據(jù)類(lèi)型dtype用法說(shuō)明

    tensorflow中的數(shù)據(jù)類(lèi)型dtype用法說(shuō)明

    這篇文章主要介紹了tensorflow中的數(shù)據(jù)類(lèi)型dtype用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • 詳解Python爬取并下載《電影天堂》3千多部電影

    詳解Python爬取并下載《電影天堂》3千多部電影

    這篇文章主要介紹了Python爬取并下載《電影天堂》3千多部電影,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • python使用MySQLdb訪問(wèn)mysql數(shù)據(jù)庫(kù)的方法

    python使用MySQLdb訪問(wèn)mysql數(shù)據(jù)庫(kù)的方法

    這篇文章主要介紹了python使用MySQLdb訪問(wèn)mysql數(shù)據(jù)庫(kù)的方法,實(shí)例分析了Python使用MySQLdb模塊操作mysql數(shù)據(jù)庫(kù)的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08

最新評(píng)論