Python获取百度地图API中POI的基础教程

第一步:进入百度地图开放平台->开发文档->web服务API

http://lbsyun.baidu.com/index.php?title=%E9%A6%96%E9%A1%B5

第二步:获取密匙(一般都需要用,按照要求注册就行)

第三步:找到所需API的帮助文档,若要获取POI数据,可以点击左方“”地点检索“->服务文档。里面包括调用API的url格式,请求参数和返回参数

第四步:在python里面利用一般爬虫方法爬取该url即可

python爬虫所用的库很多,我一般以request库为主,结合json库进行数据处理。

json主要使用的函数:json.loads()  功能:str类型转化成dict类型的数据

                                       json.dumps() 功能:dict类型数据转化为str类型的数据

转化为dict之后可以用["xx"]的方式对元素进行提取,十分方便。

但是有的时候数据无法转换成json类型,对于提取出来的数据就需要用正则表达式提取了

利用函数 re.search('正则表达式','被提取文本').group()可以直接提取出所需要的内容

贴一段调用圆形区域的具体代码

# -*- coding: utf-8 -*-
import requests
import pandas as pd
from pandas import DataFrame
import numpy as np
import re

URL="http://api.map.baidu.com/place/v2/search?"
query="query=银行"
radius="&radius=5000"
output="&output=xml"
AK="&ak=LXxfpyfvzhpeYNdV4t1A2H4wTfUYrplk"

data=pd.read_excel(r"C:\Users\User\Desktop\毕业设计\stata\community.xlsx")
com_lon=np.array(data['lon'])
com_lat=np.array(data['lat'])

poi_name=[]
poi_address=[]
poi_lon=[]
poi_lat=[]
poi_amount=[]

for i in range(0,(len(com_lon)-1)):
    lon=com_lon[i]
    lat=com_lat[i]
    location="&location="+str(lat)+","+str(lon)
    url=URL+query+location+radius+output+AK
    response=requests.get(url)
    if  re.findall(r'(?<=)(.+?)(?=)',response.text) is None:
        poi_name.insert(i,0)
        poi_address.insert(i,0)
        poi_lon.insert(i,0)
        poi_lat.insert(i,0)
        poi_amount.insert(i,0)
    else:
        poi_name.insert(i,re.findall(r'(?<=)(.+?)(?=)',response.text))
        poi_address.insert(i,re.findall(r'(?<=
)(.+?)(?=
)',response.text)) poi_lon.insert(i,re.findall(r'(?<=)(.+?)(?=)',response.text)) poi_lat.insert(i,re.findall(r'(?<=)(.+?)(?=)',response.text)) poi_amount.insert(i,re.findall(r'(?<=)(.+?)(?=)',response.text)) df=pd.DataFrame({'name':poi_name,'address':poi_address,'lon':poi_lon,'lat':poi_lat,'amount':poi_amount}) df.to_excel(r"C:\Users\User\Desktop\毕业设计\stata\POI\bank.xlsx")

 

 

 

 

 

你可能感兴趣的:(Python获取百度地图API中POI的基础教程)