我正在創建一個簡單的程序,它接受來自Bitstamp.net API的'最後'值並使用它。見下面的代碼。API請求期間零星的JSONDecodeError
def getBitcoinPrice():
url = 'https://www.bitstamp.net/api/ticker/'
try:
r = requests.get(url)
priceFloat = float(json.loads(r.text)['last'])
return priceFloat
except requests.ConnectionError:
print("Error querying Bitstamp API")
os.system('say "The program broke."')
我會在3分鐘後有時發生零星的JSONDecodeError,其他時間幾個小時後。我到處尋找,無法弄清楚。看到下面的錯誤。任何幫助是極大的讚賞!
File "/Users/paulkaraffa/PycharmProjects/socialbitanalytics/actionEvaluator.py", line 70, in <module>
btcValues.append(getBitcoinPrice())
File "/Users/paulkaraffa/PycharmProjects/socialbitanalytics/actionEvaluator.py", line 26, in getBitcoinPrice
priceFloat = float(json.loads(r.text)['last'])
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/__init__.py", line 354, in loads
return _default_decoder.decode(s)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/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)
感謝您的信息。代碼從API獲取當前值,然後將其存儲在列表變量中。它每5秒鐘完成一次。該程序將每5秒運行一次,並添加新值,但隨後會因此錯誤而崩潰。所以,它似乎不是超時問題。我認爲這可能是一個與網站有關的問題,但每次檢查代碼時,這些值都顯示正常。 – paulK
在您的'except'子句中,輸出'r'的值以及您從API獲取的響應。答案將是一個400或更高的HTML代碼(400秒是客戶端錯誤,500秒是服務器錯誤),最有可能的。 您也可以使用Selenium抓取錯誤截圖。見[這個SO問題](https:// stackoverflow。com/questions/37608768 /執行例外截圖)以獲取更多信息。 –
好的建議。我會現在做,然後看看我運行它時得到的結果。 – paulK