无法在Windows上安装XML :: LibXML模块

Dee*_*pak 1 windows perl xpath cpan xml-libxml

我试图用来XPath提取一些HTML标签和数据,为此我需要使用XML::LibXML模块.

我尝试从CPAN shell安装它,但它没有安装.

我按照CPAN网站上有关安装的说明,我们需要安装libxml2,iconv以及zlib在安装之前的包装器XML::LibXML,它没有用完.

此外,如果还有其他更简单的模块可以完成我的任务,请告诉我.

手头的任务:

<dd>在html页面上搜索特定的标签,这个标签非常大(大约5000 - 10000)<dd><dt>标签.所以,我正在编写一个匹配<dd>标记内容的脚本,并获取相应(下一个)<dt>标记内的内容.

我希望我能更清楚一点.任何帮助是极大的赞赏.

Sin*_*nür 6

如果您使用的是ActiveState Perl,则应将ActivePerl 10xx Win32 PPM软件包中列出的存储库添加到ppm然后使用

ppm install XML::LibXML

尝试将HTML解析为XML通常不是一件令人愉快的事情.我认为HTML :: TokeParser更适合这项任务.

#!/usr/bin/perl

use strict;
use warnings;

use HTML::TokeParser;

my $p = HTML::TokeParser->new(\*DATA);

my @definitions;

while ( my $dl_tag = $p->get_tag('dl') ) {
    while ( my $dt_tag = $p->get_tag('dt') ) {
        my $term = $p->get_trimmed_text('/dt');
        my $dd_tag = $p->get_tag('dd');
        my $defn = $p->get_trimmed_text('/dd');
        push @definitions, [$term, $defn];
    }
}

use Data::Dumper;
print Dumper \@definitions;

__DATA__
<dl>
<dt>One</dt>
<dd>1</dd>
<dt>Two</dt>
<dd>2</dd>
</dl>
Run Code Online (Sandbox Code Playgroud)

输出:

$VAR1 = [
          [
            'One',
            '1'
          ],
          [
            'Two',
            '2'
          ]
        ];