Bing REST HTTPError(req.full_url, code, msg, hdrs, fp)
Bing REST HTTPError(req.full_url, code, msg, hdrs, fp)
我需要获取很多地址的经纬度位置,大约100k+。但是,我的代码的工作方式,我认为 Bing 正在阻止我,因为他们认为我是垃圾邮件机器人或其他东西?我不确定错误的含义。有什么办法可以解决这个问题吗?
for i in listAddresses:
url = "http://dev.virtualearth.net/REST/v1/Locations/US/" + i + "?o=xml&key=" + subscriptionKey
# original code but I got the HTTPError
# page = urllib.request.urlopen(url)
# stringPage = page.read().decode('utf-8')
# some code I found online. Still returns the same error
req = Request(url, headers={'User-Agent': 'Mozilla/5.0'})
stringPage = urlopen(req).read().decode('utf-8')
# really bad/ basic way of getting the latitude and longitude from the xml return
lat = re.findall(r'<Latitude>(.*?)</Latitude>', stringPage)[0]
long = re.findall(r'<Longitude>(.*?)</Longitude>', stringPage)[0]
address = i.replace("%20", " ")
location.append(address)
location.append(lat)
location.append(long)
File "C:\Users\...\lib\urllib\request.py", line 649, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
是Bing'blocking'你。它不一定认为您是 'spam bot' - 它只是 Bing Maps REST "Basic" 免费帐户的强加限制(但也用于防止垃圾邮件)API。
Bing 允许免费帐户每秒最多 5 个请求,每年总共有 125,000 个请求,付费产品每秒最多可以有 50 个请求,还有更多请求。您可以在此处查看更多信息:https://www.microsoft.com/en-us/maps/licensing/options
正如您在评论中提到的,它阻止了 "after 5 requests",这是有道理的。我假设您使用的是免费帐户,并且 Python 程序的速度 运行 足以每秒发出 >5 个请求。不幸的是,天下没有免费的午餐。您必须更换供应商或付费。
或者,导入 time
并在循环中添加一个 time.sleep(number_of_seconds)
。
我需要获取很多地址的经纬度位置,大约100k+。但是,我的代码的工作方式,我认为 Bing 正在阻止我,因为他们认为我是垃圾邮件机器人或其他东西?我不确定错误的含义。有什么办法可以解决这个问题吗?
for i in listAddresses:
url = "http://dev.virtualearth.net/REST/v1/Locations/US/" + i + "?o=xml&key=" + subscriptionKey
# original code but I got the HTTPError
# page = urllib.request.urlopen(url)
# stringPage = page.read().decode('utf-8')
# some code I found online. Still returns the same error
req = Request(url, headers={'User-Agent': 'Mozilla/5.0'})
stringPage = urlopen(req).read().decode('utf-8')
# really bad/ basic way of getting the latitude and longitude from the xml return
lat = re.findall(r'<Latitude>(.*?)</Latitude>', stringPage)[0]
long = re.findall(r'<Longitude>(.*?)</Longitude>', stringPage)[0]
address = i.replace("%20", " ")
location.append(address)
location.append(lat)
location.append(long)
File "C:\Users\...\lib\urllib\request.py", line 649, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
是Bing'blocking'你。它不一定认为您是 'spam bot' - 它只是 Bing Maps REST "Basic" 免费帐户的强加限制(但也用于防止垃圾邮件)API。
Bing 允许免费帐户每秒最多 5 个请求,每年总共有 125,000 个请求,付费产品每秒最多可以有 50 个请求,还有更多请求。您可以在此处查看更多信息:https://www.microsoft.com/en-us/maps/licensing/options
正如您在评论中提到的,它阻止了 "after 5 requests",这是有道理的。我假设您使用的是免费帐户,并且 Python 程序的速度 运行 足以每秒发出 >5 个请求。不幸的是,天下没有免费的午餐。您必须更换供应商或付费。
或者,导入 time
并在循环中添加一个 time.sleep(number_of_seconds)
。