どうも、こんにちは。ちょっとゆっくりしていて更新が空いてしまいました。
最近取り組み始めた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が主流だとは思いますが中には今回のように別の文字コードを使っているサイトもありますので文字化けが起きる現象は日本語サイトならたまにあるのではと思い備忘のためにメモしておきます。
それでは!
コメント