这是一个基本的 HTML 表格:
<table>
<thead>
<td class="foo">bar</td>
</thead>
<tbody>
<td>rows</td>
…
</tbody>
</table>
假设源文件中有几个这样的表。是否有一个选项hxextract
,或者我可以使用的 CSS3 选择器hxselect
,或者其他一些工具,它允许提取一个特定的表,或者基于它的内容thead
或者它的类(如果它存在)?还是我坚持不那么简单awk
(或者可能是 perl,在提交之前发现)脚本?
更新:
对于基于内容的提取,perl 的HTML::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
耦合awk
或任何方式都可以同样有效。