gpt4 book ai didi

对 Coindesk 的 Python API 调用返回 403 或 405。如何排除故障?

转载 作者:行者123 更新时间:2023-12-01 02:18:45 30 4
gpt4 key购买 nike

我正在尝试从 coindesk 的 API 中提取 json 数据,并且我尝试了两种方法(直接 urllib.request,然后是我传递 UA 数据的方法。两者都阻止了我(每个代码下面都有错误,带有命令行输出)。

有没有办法让代码更健壮?更能抵抗被封锁?据我所知,没有任何文档,也没有可以查看的存储库来了解他们的 API 是否符合要求。但是,我知道我正在直接访问 coindesk 希望人们使用的 API,因此我发现这有点奇怪(与抓取 Web 数据的情况相反)。

感谢您的帮助。

此代码抛出 403,并退出并显示错误:

urllib.error.HTTPError:HTTP 错误 403:禁止

import urllib.request
import json
req = 'https://api.coindesk.com/v1/bpi/currentprice.json'
readdata = urllib.request.urlopen(req)
json_data = readdata.read()
print json_data

此代码引发 405,错误为:

urllib.error.HTTPError:HTTP 错误 405:nginx/1.12.1

import json
import urllib.request

exchange_url = 'https://api.coindesk.com/v1/bpi/currentprice.json'
user_agent= 'Mozilla/5.0 (Windows NT 6.1; Win64; X64)'
values = {'name' : 'Mischa Kolding',
'location' : 'Los Angeles',
'language' : 'Python' }
headers = {'User-Agent' : user_agent }

data = urllib.parse.urlencode(values)
data = data.encode('ascii')
req = urllib.request.Request(exchange_url, data, headers)
with urllib.request.urlopen(req) as response:
the_json = response.read()
print(the_json)

我应该指出,直接导航到 json 链接会在浏览器中显示 json。

这里是 coindesk 的 API 页面:https://www.coindesk.com/api/

编辑:

感谢 t.m.adam,我解决了这个问题。除了添加 header 之外,我做了所有事情,这才是真正需要的。感谢您帮助解决我的菜鸟问题:

#This is the API for BTC price request.  
import json
import urllib.request

url = 'https://api.coindesk.com/v1/bpi/currentprice.json'
hdr = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64)' }

req = urllib.request.Request(url, headers=hdr)
readdata = urllib.request.urlopen(req)
json_data = readdata.read()
print(json_data)

最佳答案

如上所示,这段代码可以工作。缺少标题详细信息(就像我脸上的 Nose 一样简单)。

#This is the API for BTC price request.  
import json
import urllib.request

url = 'https://api.coindesk.com/v1/bpi/currentprice.json'
hdr = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64)' }

req = urllib.request.Request(url, headers=hdr)
readdata = urllib.request.urlopen(req)
json_data = readdata.read()
print(json_data)

关于对 Coindesk 的 Python API 调用返回 403 或 405。如何排除故障?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48141097/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com