0

したがって、特定の Web サイトでは、たとえばdiv 要素があります。次の場所にある、ページのメイン コンテンツの特定のサブセットの xpath を適切に指定したいと考えています。

<div[@id="content"> otherwise known as <div[3]>

具体的には、2 番目の horizo​​ntal-rule (hr) タグと 3 番目の horizo​​ntal-rule (hr) タグの間のコンテンツの xpath が必要です。それぞれ、次のようにすべきだと思います。

'//div[@id="content"]/hr[2]' **AND** '//div[@id="content"]/hr'

私はXPath チュートリアルを読んでいて、2 つの hr タグが兄弟であるかどうかを調べようとしています。ただし、Python はそれらをそのように認識していないようです。私は次のすべての派生を試しました:

"following-sibling" and "preceding:: and not(preceding::)"

どれがどれで何が何だかわからなくなるほど。私は混乱していることを知っています。スクリプトは、目的の 2 時間目が content/div 内の 3 時間目として番号付け/識別されていない (番号付けにおいて論理的に従わない) という事実によって混乱していると思います。 「すべき」は... Firebugが私に言ったことによると。

要するに、この xpath を正しく指定するにはどうすればよいでしょうか。繰り返しになりますが、これらの横罫タグは兄弟のように見えるので、この 2 つのタグの間のコンテンツを指定するには、次の兄弟と前の兄弟のような構造に従うと思います。

4

1 に答える 1

0

XPath 2.0関数にアクセスできる場合は、intersect を使用して 2 つの間のすべての要素を選択できます。

//hr[2]/following-sibling::node()
intersect
//hr[3]/preceding-sibling::node()

XPath 1.0関数にしかアクセスできない場合は、このすばらしい回避策を使用して同じ結果を得ることができます。

//hr[2]/following-sibling::node()[
count(.| //hr[3]/preceding-sibling::node()) 
= 
count(//hr[3]/preceding-sibling::node())
]
于 2013-07-12T21:49:24.903 に答える