如何打印HTML:TableExtract结果?

时间:2012-08-02 19:06:55

标签: perl

这是一个愚蠢的问题。我是Perl的新手,并尝试使用HTML:TableExtract在线提取一些数据。我从网页上获得了数字,但不知道如何在txt文件中打印出来。我试图打开一个文件,但没有成功。这是我使用的代码。感谢。

#!/usr/bin/perl
use Encode qw(decode);
use Encode;
use Encode::HanExtra;
use Encode::HanConvert;
use strict;
use warnings;


chdir("C:/perlfiles/test") || die "cannot cd ($!)";

my $file = "tokyo.html";
use HTML::TableExtract;
open my $outfile, '>', "tokyo.txt" or die 'Unable to create file';

my $label = 'by headers';
 my $te = HTML::TableExtract->new(headers => [qw(number city)]);

$te->parse_file($file);

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

close $outfile;

有什么问题?感谢。

1 个答案:

答案 0 :(得分:0)

使用>>代替>>每次都会覆盖最后一个文件,因此如果循环迭代的结束没有返回任何值,那么最终会得到一个空白文件。 >>附加到现有文件的EOF,从而保留以前写入的数据。

open (OUT,'>>tokyo.txt') or die 'Unable to create file';

这样的事情可能有用。

open (OUT,'>>tokyo.txt') or die 'Unable to create file';
....
....
foreach my $row ($ts->rows) {
      print OUT join(",", @$row) . "\n";
   }
....
close OUT;

此外,您的文件句柄不太正确my $outfile。文件句柄应该是"标签"使用文件句柄连接到外部文件。在您的情况下,$outfile是一个变量,不包含任何值!因此没有标签,因此文件不会打开。您必须使用类似OUT(如我所做)或OUTFILE之类的内容突出显示perl与外部文件的连接,并使用此文件句柄通过代码编写,读取关闭文件等

相关问题