1

こんにちは、私は R の初心者で、Web サイトのデータをスクレイピングしようとしています。問題は、データが一貫して格納されていないことです。

時々私は見ます:

<div class = "text">   The text I want   </div>

また、次のように表示されることもあります。

<div class = "text"><div class = "text">   The text I want   </div></div>

これまでのところ、XML パッケージと次の R コードを使用しています。

doc = htmlTreeParse(url, useInternalNodes = T)
text = xpathSApply(doc, "//*/div[@class='text']", xmlValue) 

問題は、このコードが 2 番目の例に出くわしたときに「The text I want」を 2 回カウントすることです。これは、<div class>属性が 2 回検出されるためです。1回しか表示されないので、1回だけカウントしたいです。

どんなポインタでも大歓迎です!

4

2 に答える 2

2

出現回数を数えたいだけなら、すべてのノードを見つけることができるはずです

all_text <- xpathSApply(doc, "//*/div[@class='text']", xmlValue)

および二重ノード

doubled_text <- xpathSApply(doc, "//*/div[@class='text']/div[@class='text']", xmlValue)

次に、一方の長さを他方から差し引いて、真の反射を取得します。

于 2013-01-08T13:58:12.673 に答える
2
xtext <- "<div class = \"text\">   The text I want   </div>
</div><div class = \"text\"><div class = \"text\">   The text I want   </div></div>"
doc <- htmlParse(xtext)
xpathSApply(doc,"//*/div[@class='text']/text()")

#[[1]]
#   The text I want    

#[[2]]
#   The text I want    
于 2013-01-08T15:32:17.523 に答える