Python、Google 街景 API - HTTP 错误 400:错误请求
Python, Google street view API - HTTP Error 400: Bad Request
我正在尝试使用一些代码来下载 Google 街景图像。
到目前为止的代码是:
import urllib, os
import urllib.request
myloc = r"C:\Users\blah\blah" #replace with your own location
key = "&key=" + "enter your key" #got banned after ~100 requests with no key
def GetStreet(Add,SaveLoc):
base = "https://maps.googleapis.com/maps/api/streetview?size=400x400&location="
MyUrl = base + Add + key
fi = Add + ".jpg"
urllib.request.urlretrieve(MyUrl, os.path.join(SaveLoc,fi))
Tests = ["457 West Robinwood Street, Detroit, Michigan 48203",
"1520 West Philadelphia, Detroit, Michigan 48206",
"2292 Grand, Detroit, Michigan 48238",
"15414 Wabash Street, Detroit, Michigan 48238",
"15867 Log Cabin, Detroit, Michigan 48238",
"3317 Cody Street, Detroit, Michigan 48212",
"14214 Arlington Street, Detroit, Michigan 48212"]
for i in Tests:
GetStreet(Add=i,SaveLoc=myloc)
我通过导入 urllib.request
并添加 urllib.request.urlretrieve(MyUrl, os.path.join(SaveLoc,fi))
来克服 AttributeError: module ‘urllib’ has no attribute ‘urlretrieve’
。
然而我现在得到 urllib.error.HTTPError: HTTP Error 400: Bad Request
但我不太确定为什么或如何解决这个问题。
你很接近,但 urllib 默认没有 url-encode 参数。您需要明确地调用引用者。 API 返回 400,因为当地址中有空格时 URL 的格式不正确。尝试添加:
MyUrl = base + urllib.quote_plus(Add) + key
注意:您似乎在使用 Python 2。Python 3 需要:
import urllib.parse
MyUrl = base + urllib.parse.quote_plus(Add) + key
我正在尝试使用一些代码来下载 Google 街景图像。
到目前为止的代码是:
import urllib, os
import urllib.request
myloc = r"C:\Users\blah\blah" #replace with your own location
key = "&key=" + "enter your key" #got banned after ~100 requests with no key
def GetStreet(Add,SaveLoc):
base = "https://maps.googleapis.com/maps/api/streetview?size=400x400&location="
MyUrl = base + Add + key
fi = Add + ".jpg"
urllib.request.urlretrieve(MyUrl, os.path.join(SaveLoc,fi))
Tests = ["457 West Robinwood Street, Detroit, Michigan 48203",
"1520 West Philadelphia, Detroit, Michigan 48206",
"2292 Grand, Detroit, Michigan 48238",
"15414 Wabash Street, Detroit, Michigan 48238",
"15867 Log Cabin, Detroit, Michigan 48238",
"3317 Cody Street, Detroit, Michigan 48212",
"14214 Arlington Street, Detroit, Michigan 48212"]
for i in Tests:
GetStreet(Add=i,SaveLoc=myloc)
我通过导入 urllib.request
并添加 urllib.request.urlretrieve(MyUrl, os.path.join(SaveLoc,fi))
来克服 AttributeError: module ‘urllib’ has no attribute ‘urlretrieve’
。
然而我现在得到 urllib.error.HTTPError: HTTP Error 400: Bad Request
但我不太确定为什么或如何解决这个问题。
你很接近,但 urllib 默认没有 url-encode 参数。您需要明确地调用引用者。 API 返回 400,因为当地址中有空格时 URL 的格式不正确。尝试添加:
MyUrl = base + urllib.quote_plus(Add) + key
注意:您似乎在使用 Python 2。Python 3 需要:
import urllib.parse
MyUrl = base + urllib.parse.quote_plus(Add) + key