首页 > 解决方案 > 如何通过之前的标签内容选择标签?

问题描述

我有一个看起来像这样的 html 页面:

<div>
<h1>First Item</h1>
<p> the text I want </p>
</div>

<div>
<h1>Second Item</h1>
<p> the text I don't want </p>
</div>

“第一项”的标题可能位于每个页面抓取的不同标签级别,因此索引不固定。

我想要一些看起来像的选择(那是一个伪代码)。

from lxml import html

locate_position = locate(html.xpath(//div/h1[contains("First Item")])))

scrape = html.xpath(//div[locate_position]/p)

标签: pythonweb-scrapinglxml

解决方案


如果你只想匹配前面的兄弟:

/p/preceding-sibling::contains(h1,"First Item")

更接近您的示例的选项是:

/div[contains(h1, "First Item")]/p

哪个得到 p 是 div 的孩子有一个 h1 孩子。


推荐阅读