我正在使用Crawler库来帮助您创建一些XPath表达式来获取HTML标记的内容。我目前正在从页面中读取HTML5内容,并且我希望以这种方式检索未插入标记的文本。
<div class="country">
<strong> USA </strong>
Some text here
</div>
所以我正在尝试将此文本此处的某些文字,但抓取工具库允许获取标记中的内容,而不是在其外部。
所以任何替代方案请。
这些是Crawler部分:
$crawler = new Crawler();
$crawler->xpathSingle($xml, '//div[@class="country"]/strong/@text');
答案 0 :(得分:2)
这些XPath中的任何一个都将按要求返回"Some text here"
:
normalize-space(substring-after(//div[@class="country"], 'USA'))
normalize-space(//div[@class="country"]/strong/following-sibling::text())
根据您希望容纳的变体类型进行选择。
信用:第二个例子来源于comment @Keith Hall首次提出的建议。
<强>更新强>:
正如我所提到的,你需要根据你想要容纳的变化来选择你的XPath。我刚刚发布的帖子比您遇到的变化:
<div class="country">
<strong> USA </strong>
Some text here
<i>Do not want this text</i>
</div>
您可以使用上面的第二个XPath排除"Do not want this text"
并按要求返回"Some text here"
,但只需获取下面的第一个文本节点:
normalize-space(//div[@class="country"]/strong/following-sibling::text()[1])