概要
- PythonのRequestsモジュールを利用して、APIレスポンスを取得しようとしたが
JSONDecodeError
になり、うまく取得できなかった。 - レスポンスがHTMLなのにJSONに変換しようとしていたことが原因。
- とりあえず、Unicodeに変換したらちゃんと取得できた。
もうちょっと詳しく
エラーが出た。。。なぜ?
以下のようにrequests.request
でResponseを取得してr.json()
でJSONに変換した。
r = requests.request(method, URL, heasers=headre, data=data)
return r.json()
そうすると下記のエラーが出た。。。
JSONDecodeError, Expecting value: line 1 column 1 (char 0)
色々試したところ、requests.request
で取得したResponseオブジェクトr
がHTMLだということがわかった。
対処!!
requests.request
で取得したrequests.ResponseオブジェクトをUnicodeに変換。
r = requests.request(method, URL, heasers=headre, data=data)
return r.text()
これでとりあえずHTMLを取得できた。
Beautiul Soupを利用すると、さらにHTMLからうまいことデータを抽出できるらしい。試していませんが、興味ある方は参考に載せたサイトをどうぞ。
参考
- Requetsモジュール仕様
- Beautiul Soupについて