スポンサーリンク

Pythonで”windows-31j”のレスポンスが返された際のデコード処理

スクレイピングの際、酷い文字化けが発生したので下記の対応を行った。

response = urllib.request.urlopen(url)
html = response.read().decode(response.headers.get_content_charset(), errors='ignore')
parsed_html = BeautifulSoup(html, 'html.parser')
404 Not Found - Qiita - Qiita

しかしながら

LookupError: unknown encoding: windows-31j

というエラーで出力出来なかった。(”errors=’ignore'”も機能していない?)

結局、文字コードを直接指定した。

html = response.read().decode('cp932', errors='ignore')

“windows-31j”はIANAに登録された名称で、文字コードとしては”cp932(=Shift-JIS)”を指定するようです。

タイトルとURLをコピーしました