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'(?<=<name>)(.+?)(?=</name>)',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'(?<=<name>)(.+?)(?=</name>)',response.text))
        poi_address.insert(i,re.findall(r'(?<=<address>)(.+?)(?=</address>)',response.text))
        poi_lon.insert(i,re.findall(r'(?<=<lng>)(.+?)(?=</lng>)',response.text))
        poi_lat.insert(i,re.findall(r'(?<=<lat>)(.+?)(?=</lat>)',response.text))
        poi_amount.insert(i,re.findall(r'(?<=<name>)(.+?)(?=</name>)',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")

 

 

 

 

 

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
要使用Python获取百度地图POI数据,可以使用百度地图API提供的web服务来实现。首先,你需要申请一个百度开发者账号,并创建一个应用程序以获取访问API的密钥。 接下来,你可以使用Python的requests库来发送HTTP请求并获取百度地图POI数据。首先,你需要构建一个HTTP请求URL,包括你的密钥和其他必需的参数,比如城市、关键词等。然后,发送GET请求到百度地图API,并获取返回的JSON数据。 下面是一个示例代码,演示如何使用Python获取百度地图POI数据: ```python import requests # 设置百度地图API的密钥和其他参数 api_key = "你的密钥" city = "北京市" keyword = "餐厅" # 构建HTTP请求URL url = f"http://api.map.baidu.com/place/v2/search?query={keyword}&region={city}&output=json&ak={api_key}" # 发送GET请求并获取返回的数据 response = requests.get(url) data = response.json() # 处理返回的数据 if data["status"] == 0: # 输出POI数据 for poi in data["results"]: print(poi["name"], poi["address"], poi["telephone"]) else: print("获取POI数据失败") ``` 在这个示例代码,我们使用了requests库来发送GET请求并获取返回的JSON数据。然后,我们可以通过解析JSON数据来提取感兴趣的POI信息,比如名称、地址和电话号码。 需要注意的是,在构建HTTP请求URL时,我们使用了f-string来方便地将参数插入URL。此外,你还需要根据你的需求来调整代码的其他参数,比如城市和关键词。 这只是一个简单的示例,你可以根据自己的需求来扩展和优化代码。希望这个答案能帮助到你!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

粟智豪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值