perl-xml::(x)html的libxml-dom解析器的一组有用的食谱示例



一些更简单的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

初学者可以使用的好的配方示例包括

  1. 将$dom转换为perl数据结构。数据:Dumper($dom)没有给我带来任何特别有趣的东西。当然,我想转换两种方式:从和到。

  2. 打印输出很漂亮,也许有一些控制。

  3. 将html清理为xhtml。

  4. 用逻辑进行转换。(有一些很好的例子可以用单独的dom元素来做事情,但我认为这更具普遍性。)例如,我如何对两个连续的dom元素进行操作?我有XAB。如果是连续的,我想在sup中添加一个"class"或"style"(例如,style="width:0")。

  5. 将所有类和样式分解为一个最小的模板样式表。

  6. XML::LibXML的其他"酷"one_answers"简单"用途。

  7. (留作后续编辑,以回应有用的食谱)建议:

    (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" } );

相关内容

  • 没有找到相关文章

最新更新