シンプルで使いやすい Python の HTTP リクエスト用ライブラリ Requests を使っているときに文字化けを解消する方法をご紹介します。
import requests
URL = 'https://www.1101.com/home.html'
r = requests.get(URL)
if r.status_code == 200:
print(r.text.encode('utf-8')) # => 文字化けしたテキスト
# 文字化けの原因はエンコーディング
print(r.encoding) # => 'ISO-8859-1'
# エンコーディングを変更すると
# 自動で文字化けが解消されたテキストが取得できるようになる
# エンコード utf-8 の部分は状況に応じて変更すれば OK
r.encoding = 'Shift_JIS'
print(r.text.encode('utf-8'))
気をつけるべきポイントとしては、 requests の Response オブジェクトのプロパティ text は unicode にデコードされている形がデフォルトという点です。 Python 2.7 の場合( Python 3 の場合は未確認です )、 HTTP レスポンスの生のボディを格納した content プロパティは str 型であるため、このあたりのちがいに注意が必要です。
import requests
URL = 'https://www.1101.com/home.html'
if r.status_code == 200:
r = requests.get(URL)
print(type(r.text)) # => unicode
print(type(r.content)) # => str