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

时间:2017-07-09 08:55:47

标签: xpath

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

如何抓取此li标签中的文字内容; &#34;培训日&#34;?

所以我需要说“如果强标签有电影标题&#39;在其中,返回&#39;训练日&#39;。

我已尝试使用&#34;以下兄弟&#34;,但似乎无法做到这一点。

另一次尝试是

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

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

2 个答案:

答案 0 :(得分:2)

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

您可以尝试更具体的XPath

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

仅获得“培训日”

答案 1 :(得分:0)

  

如何抓取此li标签中的文字内容; “训练日”?
  所以我需要说'如果强标签中有'电影标题',请返回'训练日'。

以下XPath表达式在strong-element后面选择所有 li-element的文本节点,该值包含字符串'Movie Title'。

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

在您的示例XML中,这会导致“培训日” 但是如果遵循更多的文本节点,则必须将表达式限制为第一个文本节点,如此

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