【发布时间】:2021-09-23 01:38:38
【问题描述】:
这是我在标题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>
【问题讨论】:
-
您提供的数据 sn-p 不包含
table标记,因此不包含表。请制作一个最小但可重现的示例,即跳过显示您的问题实际上不需要的所有内容(例如使用 LWP)并提供您认为应该可以使用的完整数据文件但与您的代码无关。 -
大概那里有一张桌子,但您只展示了一个片段,这不足以让我们帮助您。接下来,如果
$te是一个“undefined value”,因为该错误表明,那么事情确实不对,因为您使用的好模块甚至无法解析表。然后,rows方法在表格上运行,所以$table->rows。见文件;此外,这里有一些帖子,其中包含处理表格的完整示例(例如,this one,其中包含两个更完整示例的链接) -
感谢 cmets ,我想我以某种方式解决了它。将很快再次更新!
-
@Vyshunavi 好的,很好 :) 我刚刚更新了我的评论,提供了一个完整示例的链接,看看
-
@zdim 会感谢的!我已经更新了我的问题。请看看~~