rvest最高!
と思って日本語のHPをスクレイピングし始めると、必ずぶち当たった
invalid multibyte string at '<ef>シ<8d>蛟<8d>'
このエラー。
特に、表を取得したい場合にこれが起こるとPythonの優位性(このようなエラーが自分の環境ではめったに生じない)を強く感じ、Pythonで仕方なく処理をすることも多々ありました。(PythonよりRのtidyverse環境のほうが好きなのです)
しかし、
こんな記事を発見してその通りにやったらこれまで悩んでいたのが嘘のようにサクサク動いたのと、日本語でこの情報があまり出回っていない気がしたので、Qiitaの記事にしてみました。
解決法
rvest
でスクレイピングをする際に、次のようにするだけ
Sys.setlocale("LC_ALL", "English")
# rvest でスクレイピング!
# html_tableなどでスクレイプしたデータの変換等も実施
Sys.setlocale("LC_ALL", "Japanese")
こうすることで、問題なくスクレイピングとデータ変換ができました。
最後にJapaneseに戻しておかないと、スクレイプしたデータの日本語が文字化けしてしまうので
これは忘れずに。
(Windows環境で実施しているので、Macだと設定方法が違うかもしれません。ただ、考え方は、UTF-8を含むLocaleでないとrvestがおかしな挙動をするというところみたいです。)
Have a nice R life!