零基础小白:百度API地点检索并用python进行数据爬取转为CSV表格

本篇目录如下:
1. 百度地图开放平台注册,AK获取
2.关于ak的说明
3.请求URL说明
4.百度地图坐标拾取器
5.以坐标范围获取兴趣点POI
6.将POI导出CSV表格

其中前5步是对百度API的熟悉了解,具体可参考零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(基础篇)_零基础掌握百度地图兴趣点获取poi爬虫(python语言爬取)(代码篇)-CSDN博客

本篇具体讲解第6部分。

直接在Python中复制以下代码即可。

1.适用于行政区划区域检索,以爬取北京市公园为例。首先替换为自己的AK,其次可根据自己需求改代码最后一行的 公园 北京等关键字。

import requests
import json
import pandas as pd
 
def get_poi_data(query, region, output):
    """
    从百度地图API获取特定区域内的兴趣点数据
    :param query: 查询关键词
    :param region: 查询的行政区域
    :param output: 输出CSV文件名
    """
    url = 'http://api.map.baidu.com/place/v2/search'
    params = {
        'query': query,
        'region': region,
        'output': 'json',
        'ak': '
改为你的AK'
    }
 
    all_data = []
    for page in range(0, 10):  # 假设最多获取10页数据
        params['page_num'] = page
        response = requests.get(url, params=params)
        data = response.json()
        if data.get('status') == 0:  # 请求成功
            for result in data['results']:
                all_data.append({
                    'name': result['name'],
                    'address': result['address'],
                    'latitude': result['location']['lat'],
                    'longitude': result['location']['lng'],
                })
        else:
            print(f"请求失败: {data.get('message')}")
            break
 
    df = pd.DataFrame(all_data)
    df.to_csv(output, index=False, encoding='utf-8')
 
# 使用示例
get_poi_data(
'公园', '北京', 'beijing_parks.csv')

2.适用于多边形区域检索。以爬取北京市39.915,116.404,39.975,116.414矩形范围的银行为例。首先替换为自己的AK,其次可根据自己需求改代码最后一行的 银行 经纬度 导出的表格名等关键字。

import requests
import json
import pandas as pd
 
def get_poi_data(query, bounds, output):
    """
    从百度地图API获取特定区域内的兴趣点数据
    :param query: 查询关键词
    :param bounds: 查询的经纬度区域
    :param output: 输出CSV文件名
    """
    url = 'http://api.map.baidu.com/place/v2/search'
    params = {
        'query': query,
        'bounds': bounds,
        'output': 'json',
        'ak': '
改为你的AK'
    }
 
    all_data = []
    for page in range(0, 10):  # 假设最多获取10页数据
        params['page_num'] = page
        response = requests.get(url, params=params)
        data = response.json()
        if data.get('status') == 0:  # 请求成功
            for result in data['results']:
                all_data.append({
                    'name': result['name'],
                    'address': result['address'],
                    'latitude': result['location']['lat'],
                    'longitude': result['location']['lng'],
                })
        else:
            print(f"请求失败: {data.get('message')}")
            break
 
    df = pd.DataFrame(all_data)
    df.to_csv(output, index=False, encoding='utf-8')
 
# 使用示例
get_poi_data(
'银行', '39.915,116.404,39.975,116.414', 'beijing_banks.csv')

  • 15
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值