スポンサーリンク

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

Web系

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

response = urllib.request.urlopen(url)
html = response.read().decode(response.headers.get_content_charset(), errors='ignore')
parsed_html = BeautifulSoup(html, 'html.parser')
スクレイピングした結果が文字化けしてしまったときの解決策 - Qiita
スクレイピングには様々なやり方があると思います。 個人的にはurllibとBeautifulSoupを使うことが多いです。 response = urllib.request.urlopen(url) parsed_html = B...

しかしながら

LookupError: unknown encoding: windows-31j

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

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

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

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