如何使用高德API(搜索POI)

2019-05-04  本文已影响0人  Autistic_8d3b

一 、相关代码

import requests
import pandas as pd

parameters = {'key': '35461ff6217745537e0f163d6324022c'}
parameters.update( {'keywords': '图书馆',
                    'city':'440100',
                    'citylimit': True
                   })

pois = []
pg_no = 1

while True:
    parameters.update({'page':pg_no}) 

    r = requests.get ("http://restapi.amap.com/v3/place/text", params=parameters)
    data = r.json()

    pois.extend(data['pois'])       

    
    no_pois_this_search = len(pois) 
    no_pois = int(data['count'])     


    if (no_pois_this_search >= no_pois): 
        break                                   
    else:
        pg_no +=1                               

        

df_input = pd.DataFrame(pois)
        

select_fields = "id name    type    typecode    location    tel pname   cityname    adname  biz_ext".split("\t")
df = df_input[select_fields]


df.to_csv("output.tsv", encoding="utf8", sep='\t') 
df.to_csv("output.json", encoding="utf8", sep='\t') 

二、相关代码说明/解释

1. 首先,我们要载入requests模块;

import requests


2. 导入pandas库;

import pandas as pd


3. 输入你自己在高德申请的key、搜索的关键词、城市对应的编码;

本例选择的关键词为“图书馆”,地区为广州市(相应的编码为440110)。

parameters = {'key': '35461ff6217745537e0f163d6324022c'}
parameters.update( {'keywords': '图书馆',
                    'city':'440100',
                    'citylimit': True
                   })

4. 构建一个最终的结果列表pois;

pois = []


5. 构建pg_no,每次给不一样的可选参数page值;

pg_no = 1


6. 不断地迭代,直到break跳出;

while True:
    parameters.update({'page':pg_no})  

    r = requests.get ("http://restapi.amap.com/v3/place/text", params=parameters)
    data = r.json()

    pois.extend(data['pois'])       

    
    no_pois_this_search = len(pois) 
    no_pois = int(data['count'])     


    if (no_pois_this_search >= no_pois): 
        break                                   
    else:
        pg_no +=1

具体步骤:

parameters.update({'page':pg_no})

pois.extend(data['pois'])

no_pois_this_search = len(pois)

no_pois = int(data['count'])

if (no_pois_this_search >= no_pois): 
        break                                   
    else:
        pg_no +=1

7. 使用pandas 模块处理数据;

df_input = pd.DataFrame(pois)


8. 选择你所想要输出的栏位;

select_fields = "id name    type    typecode    location    tel pname   cityname    adname  biz_ext".split("\t")
df = df_input[select_fields]

9. 使用pandas模块输出数据,文件格式分别为tsv和json,文件名为“output”(可自行命名);

df.to_csv("output.tsv", encoding="utf8", sep='\t')

df.to_csv("output.json", encoding="utf8", sep='\t')


10. 运行后,即可获得相应的tsv档和json档,里面包含了你想获得的相关信息,如下图所示。

得出两个文档.png

output.tsv文档内容

tsv.png

output.json文档内容

json.png
上一篇 下一篇

猜你喜欢

热点阅读