Google Colaboratory(Colab)でBeautifulSoupを使っているときに文字化けが起きた場合の対処法

どうも、こんにちは。ちょっとゆっくりしていて更新が空いてしまいました。

最近取り組み始めたPythonをプログラミング部のメンバーに少しずつ教えるようになりました。

Pythonは初めの環境設定が面倒でなかなか前に進めないことがあるのですが、Google Colaboratory(Colab)を使うようになってからすぐにコードが書けてプログラミングの練習ができるようになったので感動しています。

Colabの公式
https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja

で、このColaboratoryでBeautifulSoupを使ってスクレピングをする練習をしているのですが、日本語のサイトの場合に文字化けする現象が起きたのでその対処法について説明しておきます。

まず、文字化けが起きた時のコードです。

soup = BeautifulSoup(r.text,"lxml")

となっていました。よく見るコードです。

しかしこれで文字化けを起こしてしまうのでちょっと調べました。

そもそもColabはUTF-8を初めから採用しているらしく、スクレイピングをしているサイトとの文字コードが合わないと文字化けを起こすのではないかと予想しました。

で、上記のPythonのコードのr.textはContent-Typeのエンコーディングをします。今回のサイトはShift-JISでした。これが原因。

だから、r.textではなくbytes型で値を受けるr.contentを使ってcolab側でUTF-8にデコードすると文字化けしなくなりました。

下記のように書き換えるとうまくいきました。

soup = BeautifulSoup(r.content,"html.parser")

colab側でデコードするというと初めは難しく感じるかもしれませんがそこは勝手にやってくれますので気にしなくてもオッケー。
上記のようにr.contentにすれば大丈夫です。

現在文字コードはUTF-8が主流だとは思いますが中には今回のように別の文字コードを使っているサイトもありますので文字化けが起きる現象は日本語サイトならたまにあるのではと思い備忘のためにメモしておきます。

それでは!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

京都大学、京都大学大学院と進学し塾の先生をやっていましたが資格試験に失敗。
30代過ぎて職歴が無く就職活動も失敗し、自営業でスタートすることを決意。せどりと倉庫の日雇いバイトと家庭教師から始めて今ではせどり、情報発信、プログラミングで年収1000万ほどになりました。

コメント

コメントする

目次