0

以下は基本的な HTML テーブルです。

<table>
  <thead>
    <td class="foo">bar</td>
  </thead>
  <tbody>
    <td>rows</td>
    …
  </tbody>
</table>

ソース ファイルにそのようなテーブルがいくつかあるとします。のオプションhxextract、または CSS3 セレクターhxselect、または他のツールで使用できるものはありますtheadか? それとも、それほど単純ではないawk(または、送信前に見つかったperlの可能性がある) スクリプトで立ち往生していますか?

更新: コンテンツベースの抽出の場合、perlHTML::TableExtractはトリックを行います:

#!/usr/bin/env perl

use open ':std', ':encoding(UTF-8)';
use HTML::TableExtract;

# Extract tables based on header content, slice_columns helpful if colspan issues
$te = HTML::TableExtract->new( headers => ['Multi'], slice_columns => 0);
$te->parse_file('mywebpage.html');

# Loop on all matching tables
foreach $ts ($te->tables()) 
{
  # Print table identification
  print "Table (", join(',', $ts->coords), "):\n";

  # Print table content
  foreach $row ($ts->rows) 
  {
    print join(':', @$row), "\n";
  }
}

ただし、場合によっては、単純なlynx -dump mywebpage.html結合 wihawkなどでも同じくらい効率的です。

4

1 に答える 1

2

これには、まだ存在しない親セレクターまたはリレーショナル セレクターが必要です(hxselectこの記事の執筆時点では現在の標準を完全に実装していないため、存在するまでには実装されない可能性があります)。hxextract型やクラス名でのみ要素を取得するように見えるので、最良の方法はであり、そのorではなく、唯一td.fooのものを返します。tdtheadtable

この HTML をコマンド ラインから処理する場合は、スクリプトが必要になります。

于 2014-09-22T11:31:53.380 に答える