[R][Windows] rvestでtext()を使った文字列マッチングができないときの対処法

xpathの文字コードをUTF-8に変換すれば、文字列マッチングができるようになる。

html_nodes(data, xpath = iconv("//table[@class='style56']//a[contains(text(),'図')]", "cp932", "UTF-8"))

仕事でウェブスクレイピングを行うことに。

解析環境は以下
・Windows 10 Pro 64bit
・R
・rvest

a要素の内容に”図”を含むノードを取得しようとして

library(rvest)
uri  <- "https://www.safety-kinki.meti.go.jp/denryoku/26accident/H26FYdenki_jiko.htm"
data <- read_html(uri, encoding = "cp932")
html_nodes(data, xpath = "//table[@class='style56']//a[contains(text(),'図')]")

のように記載。

でも、要素は取得できなかった。

{xml_nodeset (0)}

一方、Linux (Ubuntu)だと上手くいく。

「あ、文字コードの問題ね」とうことで、xpath引数の文字コードをUTF-8に変換。

html_nodes(data, xpath = iconv("//table[@class='style56']//a[contains(text(),'図')]", "cp932", "UTF-8"))

これで解決。

{xml_nodeset (8)}
[1] <a href="image_jirei7.pdf">(図)</a>
[2] <a href="image_jirei17.png">(図)</a>
[3] <a href="image_jirei19.pdf">(図)</a>
[4] <a href="image_jirei32.pdf">(図)</a>
[5] <a href="image_jirei38.pdf">(図)</a>
[6] <a href="image_jirei40.pdf">(図)</a>
[7] <a href="image_jirei45.pdf">(図)</a>
[8] <a href="image_jirei48.pdf">(図)</a>

xpathはUTF-8で記載する仕様なのかな?

--
YouTube: ミサキさん

問い合わせ先
Mail: caprico.aries@gmail.com
Twitter: https://twitter.com/caprico_aries(無言フォローもお気軽に)

コメント

タイトルとURLをコピーしました