XPathを介してWebページの特定の部分を読み込もうとしています。このページはあまり整形式ではありませんが、変更することはできません...
<root>
<div class="textfield">
<div class="header">First item</div>
Here is the text of the <strong>first</strong> item.
<div class="header">Second item</div>
<span>Here is the text of the second item.</span>
<div class="header">Third item</div>
Here is the text of the third item.
</div>
<div class="textfield">
Footer text
</div>
</root>
さまざまなアイテムのテキスト、つまりヘッダーdivの間にあるテキストを抽出したいと思います(たとえば、「これが最初のアイテムのテキストです。」)。これまで、このXPath式を使用してきました。
//text()[preceding::*[@class='header' and contains(text(),'First item')] and following::*[@class='header' and contains(text(),'Second item')]]
ただし、スクレイプしたいページでアイテムの順序が異なるため、終了アイテム名をハードコーディングできません(たとえば、「最初のアイテム」の後に「3番目のアイテム」が続く場合があります)。
XPathクエリを適応させる方法についてのヘルプをいただければ幸いです。