2017-06-28 9 views
0

XMLパッケージを使用してHTML文書からデータを抽出しようとしています。 私は、次のように行く:その内容はtxtファイルに次のようになりますXMLNodeSetからRを抽出するデータ

、そのクラス(a)の "XMLNodeSet" を返し

library(XML) 
sink("parse.txt") 
parse<-htmlParse(file = "jdwaz.html",encoding = "GBK") 
a=getNodeSet(parse,'//div[@class="amount"]') 
print(a) 

[[1]] 
<div class="amount"> 
        <span>总额 ¥113.80</span> <br /><span class="ftx-13">在线支付</span> 
            </div> 

[[2]] 
<div class="amount"> 
        <span>总额 ¥99.00</span> <br /><span class="ftx-13">在线支付</span> 
            </div> 

私は2 ""

の20のを示し、

クラス(a [1])は "リスト"を返します "总额¥99.00"のコンテンツを取得したいと思います。

x <- xpathApply(y, "//table/tr") 
sapply(x,xmlValue)   ## it a list of nodes.. 
" Test1.1 Test1.2 " " Test1.3 Test1.4 " 

が、それは私の状況に適合しない: は、私はそれはのようなテキストを取得するためにxmlvalueを使用していますr - xpathApply on XMLNodeSet (with XML package) に一つの方法を見つけました。私はxmlvalue(A)を入力すると、それが返されます :

Error in UseMethod("xmlValue") : no applicable method for 'xmlValue' applied to an object of class "XMLNodeSet" 

私はXMLNodeSetクラスに対処するための適切な方法を見つけることができませんでした。 HELP!

+0

)私はあなたが私はあなたが私に – listen

答えて

0

XMLノードセットを照会するには、先頭に "。"を付けます。現在のノードとの相対的な関係になります。 2つのspanタグがあるので、class属性のないタグを取得します。

sapply(a, function(x) xpathSApply(x, ".//span[not(@class)]", xmlValue)) #OR 
sapply(a, xpathSApply, ".//span[not(@class)]", xmlValue) 
[1] "总额 ¥113.80" "总额 ¥99.00" 
+0

おかげで多くのことを助けることができるかどうか、私は** /スパン/テキストを(使うだろう、私の質問に関連する質問をした@Zelbinian **間でコンテンツを取得しますタグのペア。 今、新しい質問があります。<> などのコンテンツを取得するのにxmlGetAttrを使用します。 私が欲しいコンテンツは**中国語**であり、Rは間違った言葉でコンテンツを返します。私はそれがエンコード方法のためだと思いますが、関連するset inxmlGetAttr関数はありません。悲しい…。 – listen

+0

** iconv **関数が見つかりました。エンコードの問題に役立ちます。 – listen

関連する問題