You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python调用Google街景API时遭遇HTTP 400错误请求问题

排查并解决Google Street View API的HTTP 400错误

HTTP 400错误本质是请求格式不符合API的要求,我帮你梳理几个核心问题点,对应修改代码就能解决:

1. 替换URL中的HTML转义字符&为&

你代码里的base和key部分用了&——这是HTML里的转义字符,但直接放在URL里会被API识别成无效的参数分隔符,导致参数解析失败。把所有&换成普通的&:

base = "https://maps.googleapis.com/maps/api/streetview?size=400x400&location="
key = "&key=" + "your_valid_api_key"  # 这里直接用&,不要用&

2. 对地址参数做URL编码

如果你的测试地址(比如Tests里的内容)包含空格、逗号、特殊符号,直接拼接到URL里会破坏请求格式。必须用urllib.parse.quote()对地址进行编码,让它符合URL规范:

from urllib.parse import quote  # 先导入这个模块

def GetStreet(Add,SaveLoc):
    base = "https://maps.googleapis.com/maps/api/streetview?size=400x400&location="
    encoded_add = quote(Add)  # 对地址进行URL编码
    MyUrl = base + encoded_add + key
    # 其他代码...

3. 确保API Key的有效性和权限

  • 去Google Cloud控制台确认你的API Key已经启用了Street View Static API,没启用的话API肯定会报错;
  • 检查Key本身有没有输错,有没有多余的空格或特殊字符;
  • 之前无Key请求被封禁,换用有效Key后要注意请求频率不要超过API配额。

4. 优化文件名避免后续路径错误(可选但实用)

直接用原始地址当文件名,可能会包含系统不允许的字符(比如/、:),可以简单处理一下:

safe_filename = Add.replace(" ", "_").replace(",", "-").replace("/", "-") + ".jpg"

修改后的完整代码示例

import urllib.request
import os
from urllib.parse import quote

myloc = r"C:\Users\blah\blah"  # 替换为你的保存路径
key = "&key=" + "your_valid_api_key"  # 替换为你的有效API Key

def GetStreet(Add, SaveLoc):
    base = "https://maps.googleapis.com/maps/api/streetview?size=400x400&location="
    encoded_add = quote(Add)
    MyUrl = base + encoded_add + key
    # 处理文件名,避免特殊字符导致保存失败
    safe_filename = Add.replace(" ", "_").replace(",", "-").replace("/", "-") + ".jpg"
    urllib.request.urlretrieve(MyUrl, os.path.join(SaveLoc, safe_filename))

# 测试用例
Tests = ["457 West 14th Street, New York, NY"]
for addr in Tests:
    GetStreet(addr, myloc)

按以上步骤修改后,应该就能解决HTTP 400的问题了。如果还是报错,可以加个try-except捕获错误并打印API返回的具体内容,能更精准定位问题。

内容的提问来源于stack exchange,提问作者Maverick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:03:39