2
    <DOC NUMBER=1>
<DOCFULL> -->
<br><div class="c0">
<p class="c1"><span class="c2">Dokument 1 von 3</span></p>
</div>
<br><div class="c0">
<br><p class="c1"><span class="c2">Associated Press Financial Wire</span></p>
</div>
<br><div class="c3">
<p class="c1"><span class="c2">April 25, 2012 Wednesday 9:18 PM GMT </span></p>
</div>
<br><div class="c4">
<p class="c5"><span class="c6">Apple CEO Tim Cook emerges from Steve Jobs' shadow</span></p>
</div>
<br><div class="c4">
<p class="c5"><span class="c7">BYLINE: </span><span class="c2">By PETER SVENSSON, AP Technology Writer</span></p>
</div>
<br><div class="c4">
<p class="c5"><span class="c7">SECTION: </span><span class="c2">BUSINESS NEWS</span></p>
</div>
<br><div class="c4">
<p class="c5"><span class="c7">LENGTH: </span><span class="c2">794 words</span></p>
</div>
<br><div class="c4">
<p class="c5"><span class="c7">DATELINE: </span><span class="c2">NEW YORK </span></p>
</div>
<br><div class="c4">
<p class="c8"><span class="c2"> MAIN TEXT 1</span></p>
</div>
<br><div class="c4">
<p class="c5"><span class="c7">LOAD-DATE: </span><span class="c2">April 26, 2012</span></p>
</div>
<br><div class="c4">
<p class="c5"><span class="c7">LANGUAGE: </span><span class="c2">ENGLISH</span></p>
</div>
<br><div class="c4">
<p class="c5"><span class="c7">PUBLICATION-TYPE: </span><span class="c2">Newswire</span></p>
</div>
<br><div class="c0">
<br><p class="c1"><span class="c2">Copyright 2012 Associated Press<br>All Rights Reserved</span></p>
</div>
<!-- Hide XML section from browser
</DOCFULL>
</DOC> -->

私は xpath を初めて使用し、R (Duncan Lang の xml パッケージ) と組み合わせて使用​​して、LexisNexis から受け取った html ドキュメントを照会したいと考えています。<DOC NUMBER=1> <DOCFULL>ドキュメントには複数のニュース記事が含まれており、各記事はタグで区切られています。たとえば、セクション情報を抽出するために、各ドキュメントのいくつかの情報を抽出したいと思います。

doc <- htmlParse("hmtldoc.HTML")
xpathSApply(doc,"//span[text()='SECTION: ']/..", xmlValue)

それは私に与える:

[1] "SECTION: BUSINESS NEWS" "SECTION: BUSINESS NEWS" "SECTION: BUSINESS NEWS"

それは私が扱うことができる出力です。主な問題は、すべての記事に SECTION 情報があるわけではないことです。私が知る必要があるのは、どの記事がこの情報を提供し、どの記事が提供しないかです。できれば NA または空のリスト要素を返すことで、この情報を自分で推測できます。

この質問に関連する: 最初に DOC または DOCFULL ノードのいずれかを選択し、そこから先に進むソリューションを考え出そうとしました。

xpathSApply(doc,"//DOCFULL/*/span[text()='SECTION: ']/..", xmlValue)

これは上記と同じテキストを返すはずだと思っていましたが、そうではありません。とにかく、私はまだこの言語に慣れていないので、助けていただければ幸いです。

4

2 に答える 2

1

DOCFULLと の間に複数の「レベル」の子孫要素spanがあるため、次のいずれかを行う必要があります。

曖昧にする

//DOCFULL//*/span[text()='SECTION: ']/..

または 、レベル (div と p) について具体的に説明します。

//DOCFULL/*/*/span[text()='SECTION: ']/..
于 2012-10-03T17:08:08.410 に答える
0

与えられたドキュメントを使用すると、これを使用できます。

//*[span='SECTION: ']

テキスト 'SECTION: ' でスパン ノードを検索するように指定してから、その親を選択する必要はありません。そのテキストで 'span' 子を持つノードを選択するだけで済みます。

DOCFULL要素の子孫である必要がある場合は、使用します

//DOCFULL//*[span='SECTION: ']
于 2012-10-04T13:03:03.773 に答える