python爬虫获取小区经纬度以及结构化地址

  

本文实例为大家分享了python爬虫获取小区经纬度,地址的具体代码,供大家参考,具体内容如下

  

通过小区名称利用百度api可以获取小区的地址以及经纬度,但是由于api返回的值中的地址形式不同,所以可以首先利用小区名称进行一轮爬虫,获取小区的经纬度,然后再利用经纬度扭转到小区的结构化的地址。另外小区名称如果是…号,可以在爬虫开始之前在“号”之后加一个“院”,得到的精确度更高。这次写到程序更加便于二次利用,只需要给程序传递一个dataframe就可以坐等结果了。现在程序已经写好了,就等接下来在工作中看看效果如何了。

        类GetAddressInfo:   def __init__(自我,df):   进口熊猫   维护类型(df)==pandas.core.frame.DataFrame (df.columns“城市”)和(df.columns“名字”)\   “dataframe不是vailid”   从bs4进口BeautifulSoup   从urllib导入请求   进口再保险   熊猫作为pd导入   进口numpy np   urllib进口。解析为urp   自我。__data__=df   def get_address(自我):   进口numpy np   自我。__data__['小区经度']=np.nan   自我。__data__['小区纬度']=np.nan   自我。__data__['小区地址']=np.nan   因为我在self.__data__.index:   self.__data__.loc[我,”小区纬度”),self.__data__.loc[我,“小区经度”),self.__data__。loc[我,”小区地址”]=\   self.__get_neigbour_address__ (self.__data__.loc(我的名字),\   self.__data__.loc[我,‘城市’])   返回self.__data__   def __lat__(自我,res):   试一试:   返回pd.to_numeric (re.findall(““纬度”:(. *)”(res) [0] .split (" ") [0])   除了:   返回0   def __lng__(自我,res):   试一试:   返回pd.to_numeric (re.findall(““液化天然气”:(. *)”,res) [0])   除了:   返回0   def __address__(自我,res):   试一试:   返回re.findall(“地址”:“(. *)”,“,res) [0]   除了:   返回“没有”      def __get_neigbour_address__(自我、名称、城市):   my_ak=# #替换自己的正义与发展党   查询=urp.quote(名称)   标签=urp.quote('住宅区”)   试一试:   url=' http://api.map.baidu.com/place/v2/search& # 63;查询=' +查询+”,标签=' +标签+ '=',地区+ urp.quote(市)+”,输出=json& ak=' + my_ak   要求=request.urlopen (url)   .decode res=req.read () ()   lat=self.__lat__ (res)   液化天然气=self.__lng__ (res)   地址=self.__address__ (res)   返回lat,液化天然气、地址   除了:   返回0,0,'没有'         类ReverseGetAddress:   def __init__(自我、数据):   断言(“小区纬度”data.columns)和(“小区经度”data.columns)和(data.columns“名字”),\   “DataFrame不是vailid”   从bs4进口BeautifulSoup   从urllib导入请求   进口再保险   熊猫作为pd导入   进口numpy np   urllib进口。解析为urp   自我。__data__=数据   def __get_address1__(自我、url):   试一试:   要求=request.urlopen (url)   .decode res=req.read () ()   地址=re.findall(“地址”:“(* & # 63;)“res) [0]   返回地址   除了:   返回“None1”   def __to_string__(自我,arr):   返回str (arr)   def __get_address2__(自我):   my_ak=# #替换自己的正义与发展党   base_url1=' http://api.map.baidu.com/geocoder/v2/& # 63;调=renderReverse '   base_url2='=',位置   base_url3=', pois=0,半径=1,输出=json& pois=1,正义与发展党='   url=base_url1 + base_url2 + self.__data__['小区纬度”)苹果(self.__to_string__) + ', ' \   + self.__data__['小区经度']苹果(self.__to_string__) + base_url3 + my_ak   返回的url   def get_address(自我):   url=self.__get_address2__ ()   自我。__data__['小区地址')=url.apply (self.__get_address1__)   返回self.__data__      

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

python爬虫获取小区经纬度以及结构化地址