我正在尝试从HTML中获取表格中的链接。通过使用HTML::TableExtract,我能够解析表并获取文本(即下面的例子中的Ability,Abnormal),但是无法获得表中涉及的链接。例如,
<table id="AlphabetTable">
<tr>
<td>
<a href="/cate/A/Ability">Ability</a> <span class="count">2650</span>
</td>
<td>
<a href="/cate/A/Abnormal">Abnormal</a> <span class="count">26</span>
</td>
</table>
有没有办法使用HTML :: TableExtract获取链接?或者在这种情况下可能使用的其他模块。感谢
我的部分代码:
$mech->get($link->url());
$te->parse($mech->content);
foreach $ts ($te->tables){
foreach $row ($ts->rows){
print @$row[0]; #it only prints text part
#but I want its link
}
}
答案 0 :(得分:5)
HTML::LinkExtor,将提取的表格文本传递给其解析方法。
my $le = HTML::LinkExtor->new();
foreach $ts ($te->tables){
foreach $row ($ts->rows){
$le->parse($row->[0]);
for my $link_tag ( $le->links ) {
my ($tag, %links) = @$link_tag;
# next if $tag ne 'a'; # exclude other kinds of links?
print for values %links;
}
}
}
答案 1 :(得分:3)
在构造函数中使用keep_html
选项。
<强> keep_html 强>
返回单元格中包含的原始HTML,而不仅仅是可见文本。嵌入式表格不会保留在从单元格中提取的HTML中。如果启用此选项,则标题匹配的模式必须考虑字符串中的HTML。如果提取到元素树结构中,则此选项无效。
$te = HTML::TableExtract->new( keep_html => 1, headers => [qw(field1 ... fieldN)]);