헤더 아래의 일부 데이터를 추출하는 코드는 다음과 같습니다 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%