Perl 的 HTML::Element - 仅将后代转储为 HTML

标签 perl xpath html-parsing html-tree

我在尝试输出我正在解析的匹配节点的内容时遇到问题:

<div class="description">some text <br/>more text<br/></div>

我正在使用 HTML::TreeBuilder::XPath 来查找节点(此类只有一个 div):

my $description = $tree->findnodes('//div[@class="description"]')->[0];

它找到了节点(我相信是作为 HTML::Element 返回的)但是 $description->as_HTML 也包含元素本身——我只想要包含在里面的所有东西作为 HTML 的元素:

some text <br/>more text<br/>

我显然可以用正则表达式去掉它,但感觉很乱,我确定我只是在某处缺少一个函数来做这件事?

最佳答案

尝试这样做:

my $description = $tree->findnodes('//div[@class="description"]/text()')->[0];

这是一个 Xpath 技巧。

关于Perl 的 HTML::Element - 仅将后代转储为 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14730122/

相关文章:

python-3.x - Selenium - 文本属性仅在调试器检查后才可用

python - 从跨度类 XPath 检索值

python - lxml - 如何获取元素的最小xpath?

xml - 清晰高效的XPath,不包含任何元素

java - 如何将 HTML 代码渲染或转换为由所见即所得编辑器生成的纯文本

c# - 获取网页中所有 url 的列表

CGI 中的 Javascript 显示错误

perl - 无法在未引用的引用上调用 “capture2”方法

python - ConfigParser 之类的东西是否适合在运行之间保存状态(键,值)?

perl - Perl 方法返回 "hashref"是什么意思?