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モジュールの基本的な使い方は下記にまとめています。よかったら見てください。
[Python] requestsの使い方
requestsモジュールは、PythonでHTTPリクエストを送信するためのライブラリです。HTTPプロトコルを使用するウェブサイトへのアクセスやAPIの呼び出しを簡単に行うことが…