一些更简单的xml perl-dom解析器的作者似乎不鼓励将其用于混合内容,而支持xml::LibXML。因此,我现在开始学习XML::LibXML,并正在寻找常用的烹饪书示例。想想从网上阅读(x)html文档并使用它进行操作。(perl烹饪书第二版已经有10年的历史了,它在这里的覆盖范围相对较弱。)我发现我想从开始
use XML::LibXML;
my $dom = XML::LibXML->load_xml( location => "fame-1-1.html", recover => 2 );
## recover=>2 is needed to allow valid html entities
初学者可以使用的好的配方示例包括
将$dom转换为perl数据结构。数据:Dumper($dom)没有给我带来任何特别有趣的东西。当然,我想转换两种方式:从和到。
打印输出很漂亮,也许有一些控制。
将html清理为xhtml。
用逻辑进行转换。(有一些很好的例子可以用单独的dom元素来做事情,但我认为这更具普遍性。)例如,我如何对两个连续的dom元素进行操作?我有XAB。如果是连续的,我想在sup中添加一个"class"或"style"(例如,style="width:0")。
将所有类和样式分解为一个最小的模板样式表。
XML::LibXML的其他"酷"one_answers"简单"用途。
(留作后续编辑,以回应有用的食谱)建议:
(a) 以递增的id枚举每个<李>在<ul>(例如,<li id="1">…<li-id="2">…)。可以使用多个元素
(b) 在多个标签上迭代(例如,按出现顺序打印所有li、dl和dt)
感谢样品。
/iaw
对于HTML DOM风格的解析,可以使用Mojo::DOM
http://blogs.perl.org/users/joel_berger/2012/10/an-example-using-mojodom-for-rewriting-html.html
http://blogs.perl.org/users/tempire/2011/02/easy-dom-parsing-with-mojodom.html
用Mojolique用户代理解析HTML
1:my$dom=Mojo::dom->new($content);
2:
3:不需要
4:
#remove stylesheets
$dom->find('link')->each( sub{ $_->remove if $_->{rel} eq 'stylesheet' } );
5:这是可能的,但值得提一个新问题
6:检查链接
示例:
Mojo::UserAgent->new->get('http://www.google.com/search?q=mojolicious')
->res->dom->find('h3.r a')
->each( sub { print shift->all_text . "n" } );