我需要忽略或删除所有HTML元素之间的所有文本,以便可以从给定网页生成空白模板。忽略HTML :: TreeBuilder输出中的文本Perl
我解析使用perl模块HTML :: TreeBuilder和HTML :: Element。
我已经尝试了文档中提到的ignore_text方法,但没有提供正确的结果。
我也尝试使用DOMXpath与PHP做同样的事情和结果似乎太麻烦管理。正则表达式可能工作,但对我来说是最后的手段。
这是我当前代码的一部分,非常基本。底部只是输出到文件。所有的代码都是可用的,我只需要格式化就可以生成模板文件。
my $url= "http://www.example.com";
my $page = get($url) or die $!;
my $tree = HTML::TreeBuilder->new_from_content($page);
$tree->parse_file($page);
$tree->ignore_text;
$tree->elementify;
open OUTPUT, "+>".$body;
my $output = $tree->as_HTML;
print OUTPUT $output;
close OUTPUT;
在此先感谢您的帮助!
编辑:我发现了问题 - 忽略文本只适用于从物理文件解析。我不得不将页面保存为一个临时文件来解析然后输出我想要的文本,然后我只是在底部取消链接($ tmp)来删除文件。我的脚本随着阅读和写入数据库变得越来越复杂,每次我需要创建这个令人讨厌的临时文件...
感谢您的回复!
而是提出一个编辑提供解决方案,无论是删除的问题或发表您的解决方案作为一个答案(然后你就可以接受),使人们可以从它在未来受益。您可能需要阅读[FAQ](http://stackoverflow.com/faq)以了解更多关于SO如何工作的信息。 :) – 2011-07-01 02:42:56