我正在尝试搜索API,使用请求函数时出现错误,似乎表明URL上的JSON中没有任何内容。当放入浏览器时,它起作用了,该函数也起作用了代码。
这是我第一次尝试编写任何东西,所以我来到这里很费力,但现在我只是被卡住了,不确定我的错误在哪里。现在,我正在打印URL,当我将其放入浏览器时,我发现JSON代码,并且该代码可以在我正在测试的另一个类似程序中使用。
import requests
import time
api = 'https://api.mojang.com/users/profiles/minecraft/'
f = open('Pokemon.txt', 'r')
for line in f:
url = (api + line)
print(url)
json_data = requests.get(url).json()
Result = (json_data)
print(result)
我在这里找回此信
https://api.mojang.com/users/profiles/minecraft/Bulbasaur
Traceback (most recent call last):
File "C:\Users\Fierce-PC\Desktop\MC Name project\Pokemon.py", line 12, in <module>
json_data = requests.get(url).json()
File "C:\Users\Fierce-PC\AppData\Local\Programs\Python\Python36-32\lib\site-packages\requests\models.py", line 897, in json
return complexjson.loads(self.text, **kwargs)
File "C:\Users\Fierce-PC\AppData\Local\Programs\Python\Python36-32\lib\json\__init__.py", line 354, in loads
return _default_decoder.decode(s)
File "C:\Users\Fierce-PC\AppData\Local\Programs\Python\Python36-32\lib\json\decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\Fierce-PC\AppData\Local\Programs\Python\Python36-32\lib\json\decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
>>>
如果您单击https://api.mojang.com/users/profiles/minecraft/Bulbasaur,并且它是JSON格式,那么您可以清楚地看到可以正常工作。
更让我感到困惑的是,这段代码有效
import urllib.parse
import requests
api = 'https://api.mojang.com/users/profiles/minecraft/'
Name = 'Bulbasaur'
url = (api + Name)
print(url)
json_data = requests.get(url).json()
print(json_data)
它会像我想要的那样输出,但是在浏览每个神奇宝贝的循环中都无法使用
{'id': '06e299358e2f44f1ad8c5f859d63973b', 'name': 'Bulbasaur'}
很抱歉,如果这是一篇结构不好的帖子,或者我确实缺少一些明显的内容。
编辑:我编辑了两个版本的代码,如下所示:
json_data = requests.get(url)
print(json_data)
对于适用于该版本的第二行上的打印,我找回了
<Response [200]>
在我不工作的主要程序上,我得到了:
<Response [204]>
据我所知,这表明我的代码无法正常运行,尽管我仍然不太确定该修复程序
答案 0 :(得分:0)
尝试此代码。它遍历文件中的各行,构造URL,然后尝试获取数据。如果失败,则应打印原因并继续进行下一行。
with open('Pokemon.txt') as fh:
for line in fh:
url = (api + line.strip())
print(url)
conn = requests.get(url)
if not conn.ok:
print("Failure on {}: {}".format(url, conn.reason))
continue
result = conn.json()
print(result)