为了账号安全,请及时绑定邮箱和手机立即绑定

请求给我正确的 url 错误

请求给我正确的 url 错误

桃花长相依 2021-12-16 16:41:03
我正在尝试搜索 API,当使用请求函数时,我收到一个错误,似乎表明 URL 上没有 JSON 中的任何内容。当放入浏览器时,它可以工作,并且该函数在一段类似的代码中工作。这是我第一次尝试编码任何东西,所以我到达这里是一种努力,但现在我只是卡住了,不确定我的错误在哪里。现在我正在打印 URL,当我放入浏览器时,我找到了 JSON 代码,并且该代码在我为测试而制作的另一个类似程序中工作。import requestsimport timeapi = '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/BulbasaurTraceback (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 Nonejson.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)>>> 如果你点击它,你可以清楚地看到https://api.mojang.com/users/profiles/minecraft/Bulbasaur工作,它是 JSON 格式,我只是不太明白这个问题。更让我困惑的是这段代码有效import urllib.parseimport requestsapi = '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]>
查看完整描述

1 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

试试这个代码。它遍历文件中的行,构造 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)


查看完整回答
反对 回复 2021-12-16
  • 1 回答
  • 0 关注
  • 158 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信