簡體   English   中英

請求給我錯誤的URL

[英]Requests giving me error with correct url

我正在嘗試搜索一個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]>

據我所知,這表明我的代碼無法運行,盡管我不太確定該修復程序

試試這個代碼。 它遍歷文件中的各行,構造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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM