[Python]requestsでの文字化け対策

pythonでhtml情報を取得したいときrequestsモジュールを利用することが多いと思います。
ただ、取得先のURLによっては、取得データが文字化けすることがあります。

import requests

# 情報を取得したいURL
url = 'https://example.com/index.html'

# リクエストを送信し、レスポンスを取得
response = requests.get(url)

# テキストを取得し、表示する
text = response.text
print(text) # <- 文字化けしている

文字化けの原因・対策は以下のとおり。

目次

原因

文字コードの差異が原因です。requestsのレスポンスヘッダに文字コード情報が含まれていない場合、デフォルトの文字コード“ISO-8859-1″と判定されます。

コーディングする際の文字コードは”Shift-Jis”や”UTF-8″が多いでしょうから、”ISO-8859-1″と判定されると文字化けの原因となります。

解消方法

requestsには取得した情報から文字コードを推定する機能(apparent_encoding)があるので、これを利用します。

import requests

# 情報を取得したいURL
url = 'https://example.com/index.html'

# リクエストを送信し、レスポンスのエンコーディングを推定する
response = requests.get(url)
response.encoding = response.apparent_encoding  # <-これを追加

# 推定されたエンコーディングでテキストを取得する
text = response.text
print(text) # <- 文字化けが解消

requestsモジュールの基本的な使い方は下記にまとめています。よかったら見てください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次