문제

나는 사용하려고합니다 XPath HTML 태그와 데이터를 추출하려면 사용해야합니다. XML::LibXML 기준 치수.

CPAN 쉘에서 설치하려고 시도했지만 설치되지 않습니다.

설치에 대한 CPAN 사이트의 지침을 따라 설치해야합니다. libxml2, iconv 그리고 zlib 설치하기 전에 포장지 XML::LibXML 그리고 그것은 효과가 없었습니다.

또한 작업을 완료하는 다른 간단한 모듈이 있으면 알려주십시오.

당면한 과제 :

나는 특정을 찾고 있습니다 <dd> 실제로 큰 HTML 페이지의 태그 (약 5000-1000) <dd> 그리고 <dt> 태그. 그래서 나는 내에서 내용과 일치하는 스크립트를 작성하고 있습니다. <dd> 해당 (다음) 내에서 컨텐츠를 태그하고 가져옵니다. <dt> 꼬리표.

조금 더 명확 해졌 으면 좋겠어요. 모든 도움은 대단히 감사합니다.

도움이 되었습니까?

해결책

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>

산출:

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

다른 팁

xpath 쿼리를 원한다면 어제 xml :: xpath :: xmlparser를 사용하여 xml 파일에서 xpath 쿼리를 수행하는 스크립트를 작성했습니다.

ActiveState의 Perl 설치와 Windows의 딸기 Perl로 테스트했습니다.

모듈을 설치하기 위해 CPAN에 가야한다는 것을 기억하지 못합니다 (이전에 있었지만 그렇게 잊었을 수도 있지만). 대신 XML :: XPath 모듈을 사용할 수 있습니까?

다음은 문서의 샘플입니다

use XML::XPath;
use XML::XPath::XMLParser;

my $xp = XML::XPath->new(filename => 'test.xhtml');

my $nodeset = $xp->find('/html/body/p'); # find all paragraphs

foreach my $node ($nodeset->get_nodelist) {
    print "FOUND\n\n", 
        XML::XPath::XMLParser::as_string($node),
        "\n\n";
}

ActiveState Perl을 사용하고 있다고 가정하면 xml :: libxml 잘 작동합니다. xml :: libxml에서 얻을 수 있습니다 랜디 코브스의 사이트 그리고 당신은 libxslt/libxml 등을 얻습니다 zlatkovic.com

먼저 libxml을 설치 한 다음 ppm을 사용하여 xml :: libxml을 설치합니다. 잘 작동합니다.

사용중인 경우 딸기 perl, CPAN은 libxml2 등으로 당신을 위해 작동해야합니다.

또한 스레드에서 내 게시물을 참조하십시오 ActivePerl 용 xml :: libxml을 어떻게 설치합니까?.

PPM을 사용하여 XML-LIBXML을 설치하는 몇 가지 문제/솔루션에 대해 설명합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top