1

Rを使用してスクレイプをスクリーンしています。ページを取得し、次を使用して、ページ上の特定の場所 (名前属性を持つアンカー タグ内のアンカー タグ) で見つかったページ上のすべてのリンクを見つけることができました。

links <- xpathSApply(doc, "//a[@name]//a/@href")

これで、Curl を使用してリンクからドキュメントを取得しました。一定量のテキストをスクレイピングしたいと考えています。テキストは常に<p>タグの間にあるようです (ただし、テキストには他の<p>タグがあり、次のテキストの前で終了します)

</pre><hr>Back to: <a href="#TOP">

<p>との間のすべてのテキストを取得することにしましたが<a href="#TOP">、xpath クエリを釘付けにすることはできません。これまでのところ、私は持っています:

text <- xpathSApply(doc, '"/ //text()[preceding:://a/@href="#TOP"] and following::*//p')

誰かが私を正しい方向に向けることができますか? stackoverflow にはかなりの数の xpath の回答がありますが、常に回答を説明しているわけではないため、自分で使用するために編集するのが難しくなっています。

サンプル HTML:

<span ID="MSGHDR-CONTENT-TYPE-H-PRE">Content-type:</b></span> <span ID="MSGHDR-CONTENT-        TYPE-PRE">text/plain; charset=us-ascii</span>
</span><p> 

lots and lots of text here that I want


</pre><hr>Back to: <a href="#TOP">Top of message</a> &#124; <a href="/cgi-bin/wa?A1=ind9709&L=cybcom&D=0">Previous page</a> &#124; <a href="/cgi-bin/wa?A0=cybcom&D=0">Main CYBCOM page</a><p>
4

1 に答える 1

0

HTML の形式が悪いため、ノードのツリーに解析されたときに整形式のインスタンスがどのように見えるかを理解するのは困難でした。

次のようなものがうまくいくかもしれません。<p>の内部で宣言されたすべての要素がその子であると想定してい<pre>ます (HTML で閉じられていなくても)。

text()<p>を持たない の子であり、最初に値 " #TOP " を持つ href を持つ次の兄弟を持つ の<p>子孫であるを検索します。<pre><a>

//body/pre[following-sibling::a[position()=1 and @href='#TOP']]//p[not(p)]/text()
于 2013-09-30T00:07:32.757 に答える