import urllib.request import urllib.parse import json import pandas as pd import csv # 输入URL,抓取http接口返回的内容 def htmlfile(url): response = urllib.request.urlopen(url) html = response.read() return html.decode('utf-8') # return html.decode('gbk') ## 2、中文字符串处理 def check_contain_chinese(check_str): list_str = list(check_str) for k in range(len(list_str)): if u'\u4e00' <= list_str[k] <= u'\u9fff': list_str[k] = urllib.parse.quote(list_str[k]) return ('').join(list_str) ## 3、单条json数据解析 def json_decode(jsonfile): Dict = json.loads(jsonfile) # 把json转化为dict lng=Dict["result"]["location"]["lng"] lat=Dict["result"]["location"]["lat"] return (lng, lat) ## 4、多条数据 def get_ak_data(addr, ak): # 数据获取 addr = check_contain_chinese(row[1]) # 中文转码 url="http://abcdaddress=%s&output=json&ak="%(addr) URL = url + ak # print(URL) jsonfile = htmlfile(URL) # 提取json文件 (lng, lat) = json_decode(jsonfile) # 返回经纬度信息 return lng, lat if __name__ == '__main__': # csv_reader = pd.read_table("D:/DataMining/User_Home_Addr2.csv") file_path = "D:/user_info2.csv" # csv_reader = pd.read_table(file_path, encoding='gbk') csv_reader = csv.reader(open(file_path)) i = 0 for row in csv_reader: if row[0] == 'user_id' or row[1] == 'address': ##含字段名子 continue try: i = i + 1 # 记录运行进度 ak_iter = "C56ea0e3cb5" # 数据获取 (lng, lat) = get_ak_data(row[1], ak_iter) print([i, row[0], row[1], lng, lat ]) except: print("exception : " + [i, row[0], row[1], -1, -1 ]) pass print("---------------------finished------------------------------")
Python地址解析示例
最新推荐文章于 2025-07-22 14:12:42 发布