1

サーバーに複数の HTML ページがあり、各ページの形式が異なります。ただし、各ページには、いくつかのヘッダーと行の値を含むテーブルが含まれています。

ここで、ヘッダーを読み取り、そのセル値を関連付けたいと思います。私は Perl に不慣れで、それを成し遂げるのに苦労しています。

HTML の例を次に示します。

<Table Border=1 width="100%">
  <tr>
    <td colspan=12 align="Center" nowrap ><B>Detailed Information for Check # 6392933</B></td>
  </tr>
  <tr>
    <td><b>PO Number</b></td>
    <td><b>Invoice Number</b></td>
    <td><b>DC Number</b></td>
    <td><b>Store Number</b></td>
    <td><b>Division</b></td>
    <td><b>Invoice Amount</b></td>
  </tr>
  <tr>
    <td>0000000000</td>
    <td>000000118608965</td>
    <td>0</td>
    <td>1860</td>
    <td>1</td>
    <td>$-21.02</td>
  </tr>
  <tr>
    <td>0000000000</td>
    <td>000000122865088</td>
    <td>0</td>
    <td>2286</td>
    <td>1</td>
    <td>$-42.04</td>
  </tr>
</Table>

ここで、すべてのセル値をヘッダー値に格納し、以下のように出力する Perl 構造を作成したいと考えています。

PO Number = 0000000000, 0000000000
Invoice Number=000000118608965, 000000122865088
DC number= 0, 0 and so on.

インターネットからすべてを検索して実行しようとしましたが、何も機能しません。セル値を変数に入れただけですが、すべての値がセル値に取り込まれるため、役に立ちません。

#!/usr/bin/Perl -w

$file = "/Path/to/file";
use Encode;
$da = `cat "$file"`;
my $data = decode_utf8($da);

use HTML::Parser;
use HTML::TableContentParser;

$tcp    = HTML::TableContentParser->new;
$tables = $tcp->parse($data);

for $t (@$tables) {
    for $r (@{ $t->{rows} }) {
        print "Row: ";
        for $c (@{ $r->{cells} }) {
            $col = $c->{data};
            print $col;
        }
        print "\n";
    }
}

どんな助けでも大歓迎です。

4

2 に答える 2

0

この場合、私は個人的に Split を使用しています。配列を分割し ( がセパレーターになります)、次に別の分割を行います。

于 2013-05-24T15:16:57.507 に答える