Python地址解析示例

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)