2011-02-02 9 views
10

私はXPathを初めて使っていますが、私はそれがどれほど強力かを見ることができます。私はこのlinkのソースコードを見ていて、次の2つのページから内容とユーザー名を抽出したいだけです。簡単にするために、ソースコードの一番上にあります。XMLパッケージを使用しているR内のXPath

コンテンツ= "戦争3の[アーカイブ] Simburgurさんのライブ ストリーム[オフライン] Gearsを" ここ

<div class="username">Simburgur</div> 

はR内の私のコードです:

を返し
doc <- htmlParse("http://forums.epicgames.com/archive/index.php/t-672775.html") 
xpathSApply(doc, "//head/meta[@name=\"description\"]") 

[[1]] 
<meta name="description" content="[Archive] Simburgur's Live Stream [Offline] Gears of War 3" /> 

明らかに、この例では、コンテンツの引用符の中にあるものだけが詰まっていますが、私の表現が取得した文字列を返すように見えません。

私は繰り返します。私はXPathの初心者です。 :)

+0

良い質問、+1。私の答えは、2つの短く効率的な解決策を見てください。 :) –

答えて

9

使用

/*/head/meta[@name='description']/@content 

これはまだ属性ノードを選択し、おそらく属性の文字列値を得るためにあなたのPLで簡単な方法があります。それはの線形トラバーサルを引き起こす可能性があるため、//略語を使用すると、XPath式の非常に遅い評価につながる可能性があります

string(/*/head/meta[@name='description']/@content) 

は注意してください:

は単なる文字列の値を取得するには、使用全体(サブ)ツリー。

XMLドキュメントの構造が静的にわかっている場合は、常に//を使用しないでください。

3

もうすぐです。これはそれを行う必要があります。

//head/meta[@name=\"description\"]/@content 

ブラケットは、メタタグの選択を制約しているが、あなたはまだあなたがしたい属性を指定する必要があります。

関連する問題