1

我正在构建一个内部阅读器风格的 PHP 应用程序,它从我们的页面中获取文本,然后对其进行各种操作。我们大多数 HTML 页面上的文本是无序的,因此应用程序必须能够在不使用类名或其他导航锚点的情况下抓取文本,因为没有。只有文本标题与锚点相关。

我想从给定的开始节点(标题)获取文本,然后在到达 img 标签时停止(可能存在也可能不存在,如果不存在,则意味着应该获取所有文本)。我目前只成功地使用 XPath 获取没有图像的文本。

这是一个示例 HTML

<b>Some title</b>
<br/> Important text
<br/> More important text
<p> More text I which should be fetched</p>
<p><img src="foo.jpg"/></p>
<p> Unimportant text, don't want it!</p>

这是我当前使用的 XPath 查询//*[text()="Some title"]/following::text()

以上确实获取了相关文本,但是如果存在,我希望它在 img 标签处停止。知道怎么做吗?

4

1 回答 1

0

获取前面没有图像的所有文本节点。

//*[text()="Some title"]/following::text()[not(preceding::img)]

如果需要,您可以轻松地进一步限制要停止的图像。

于 2013-06-16T11:36:53.307 回答