xPath 语法,用于在包含标题文本的强标记之后抓取文本数据


<li><strong>Movie Title:</strong> Training Day</li>

如何抓取此 li 标签中的文本内容;"培训日"?

所以我需要说'如果强标签中有'电影标题',则返回'训练日'。

我已经尝试过使用"以下兄弟姐妹"的东西,但似乎无法做到这一点。

另一个尝试是

//li/text()[preceding::strong[contains(text(),'Movie Title')]] 

但这会返回所有文本,而不仅仅是 li 类内部的文本。

实际上//li/text()应该返回"训练日",而//li//text()- "训练日"和"电影标题:">

您可以尝试更具体的XPath

//li[starts-with(., "Movie Title:")]//text()[not(parent::strong)]

仅获得"培训日">

如何抓取这个 li 标签中的文本内容;"培训日"?
所以我需要说'如果强标签中有'电影标题',则返回'训练日'。

以下 XPath 表达式选择所有li 元素的文本节点,其值包含字符串"电影标题"的强元素。

//li[contains(strong,'Movie Title')]/strong/following-sibling::text()

在您的示例 XML 中,这将导致"培训日"。
但是,如果随后有更多的文本节点,则必须将表达式限制为第一个文本节点,如下所示

//li[contains(strong,'Movie Title')]/strong/following-sibling::text()[1]

最新更新