2019-04-13SHAREツイートシェアはてブLINEPocketpythonの文字化けを対策するこんにちは、ともろう(@tomorrowSLog)です。pythonでwebサイトのスクレイピングをする際に、文字化けが起こってしまいました。日本語のサイトでも文字化けが起こらないサイトと起こるサイトがあるみたいです。まとめ現状さて問題のコードはこちらです。"html.parser")print(soup.title.string)日曜の夕方の看板アニメ、サザエさんのHPのタイトルを取得しようとしています。ããããふむ、何が書いてあるのか全くわからん文字化けが起きてしまいました。文字化けの原因としては、正しい文字コードで読まれていないことが原因です。現在の文字コードを確認してみます。utf-8で読んで欲しいのに、ISO-8859-1になってしまっていることがわかりました。調べてみた結果、2通りの解決策を見つけることができました。html.apparent_encodinghtml.encodingにutf-8が入っていればうまくいくはずなので、html情報から文字コードを推定してくれる.apparent_encodingを使い、そのままぶっ込みます。対策2今回はBeautifulSoupを使ってHTMLを調べているので、BeautifulSoupの文字コードを推定してくれる機能を使います。原因requestsモジュールはHTMLのレスポンスヘッダ内の文字コードを取得して文字コードを識別していて、レスポンスヘッダ内に記述がない場合’ISO-8859-1’を返しているのが原因でした。requestsソースコード参考記事:Pythonのrequestsモジュールでの文字コード対策まとめanacondaやpyenvを使っていた時は同じことをしても文字化けしてなかったので勉強になりました。HTMLも人が作っているので、あまり過信しすぎず細かい設定をみていけたらと思います。コメントをキャンセルメールアドレスが公開されることはありません。