我正在使用requests.get
命令從URL/REST端點檢索數據。數據應該是JSON格式。當我從瀏覽器訪問URL時,它具有您期望的格式,即[{"variable1":value,"variable2":value}]
。但是,當我使用requests.get
命令獲取數據時,返回的數據將被分解幷包含額外的值行,這些值可能是表示後續行上的字符數的十六進制數。以下是response.text
返回的示例。Python請求獲取響應包含意外值
2000
[{"variable1":v
2000
alue,"variable2
1ecd
":value}]
0
2000 base 16 = 8192 base 10,表示後續行有8,192個字符。請注意,在上面的例子中,我特意將行縮短爲不顯示8,192個字符:)。
不用說,這不符合JSON格式,所以我無法按預期處理它。有關爲什麼會發生這種情況的任何想法?我的猜測是,它可能與收到的響應的大小有關 - len(response.content)
表示它的大小爲335,898字節 - 所以我試圖按照here所述分塊響應,但這並不影響response.text
的輸出。欣賞任何想法的人可以分享:)
EDIT1:運行print(response.json())
產生下面的錯誤:
Traceback (most recent call last):
File "IncomingMessagesCompanyIDEvent.py", line 105, in <module>
data = getData()
File "IncomingMessagesCompanyIDEvent.py", line 65, in getData
text_file.write(response.json())
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python35\lib\site-packages\requests\models.py", line 858, in json
self.content.decode(encoding), **kwargs
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python35\lib\json\__init__.py", line 319, in loads
return _default_decoder.decode(s)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python35\lib\json\decoder.py", line 342, in decode
raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 2 column 1 (char 6)
EDIT2:已解決的問題。請參閱下面的答案。
查看編輯到我原來的帖子。我認爲這個錯誤是由於從GET命令收到的響應不是JSON格式造成的。 – skyfx
你可以用'response.iter_lines()'過濾出非json的東西嗎? – cullywest
不幸的是,這個問題不僅僅是非json的東西,而是數據跨行分割的事實。我已更新了原始帖子中的示例以反映此情況。 – skyfx