Perl 스크립트를 사용하여 HTML 데이터 추출

Perl 스크립트를 사용하여 HTML 데이터 추출

헤더 아래의 일부 데이터를 추출하는 코드는 다음과 같습니다 Item Drop%. 90.5%해당 제목 아래의 콘텐츠를 추출하고 싶습니다 . 하지만 값뿐만 아니라 전체 열만 추출할 수 있습니다. 어떤 아이디어가 있나요?

#!/usr/bin/perl

use strict;
use warnings;

use HTML::TableExtract;
use LWP::Simple;

my $file = 'data.html';
unless ( -e $file ) {
    my $rc = getstore(
        'proj/Desktop/folder1/data.html',
        $file);
    die "Failed to download document\n" unless $rc == 200;
}



my $te = HTML::TableExtract->new( headers => qw(Item Drop%)]);

$te->parse_file($file);

my ($table) = $te->tables;

foreach my $ts (ts->tables) {
    print "Table (", join(',', $ts->coords), ");\n";
    foreach my $row ($ts->rows) {
        print join(',', @$row), "\n";
    }
}

data.html것은:


 ..
 ..
 ..
<table align = "center" class="" style= .......>
<tr>
<th rowspan="2">EM</th>
<th colspan="2"><a href= "proj/Desktop/folder1/data.html" class = ..../th>
<td> 90.5%</td>
</tr>
..
..
..
..
<tr>
<th rowspan="2">EM</th>
<th colspan="2"><a href= "proj/Desktop/folder1/data.html" class = ..../th>
<td> 40%</td>
</tr>

</table>

답변1

내 의견은대부분의 경우 이는 모든 언어에서 HTML을 스크랩하는 더 좋은 방법이며 테이블에만 국한되지 않습니다. 진주의HTML::TreeBuilder::XPath필수품이며 가치를 쉽게 얻을 수 있습니다. 다음을 확인하세요.

#!/usr/bin/env perl
use strict; use warnings;
use HTML::TreeBuilder::XPath;

my $tree = HTML::TreeBuilder::XPath->new;
$tree->parse_file("./data.html");
print [$tree->findvalues('//table//td[contains(text(), "%")')]->[0];

산출

90.5%

관련 정보