Z.Z*_*Zen 2 perl perl-module html-parsing
我是Perl-HTML的新手.我正在尝试从HTML表中获取文本和链接.
这是HTML结构:
<td>Td-Text
<br>
<a href="Link-I-Want" title="title-I-Want">A-Text</a>
</td>
Run Code Online (Sandbox Code Playgroud)
我已经发现WWW :: Mechanize是从<a>部件中获取所需内容的最简单模块,但我不知道如何从中获取文本<td>.我希望这两个任务背靠背发生,因为我需要将每个单元<td>-Text与其对应<a>-Text的哈希数组配对.
任何帮助都感激不尽!
Z.Zen
WWW :: Mechanize擅长提取链接,但如果你需要获取其他文本,我通常会将它与HTML :: TreeBuilder结合使用.像这样的东西:
use HTML::TreeBuilder;
my $tree = HTML::TreeBuilder->new_from_content($mech->content);
foreach my $td ($tree->look_down(_tag => 'td')) {
# If there's no <a> in this <td>, then skip it:
my $a = $td->look_down(_tag => 'a') or next;
my $tdText = $td->as_text;
my $aText = $a->as_text;
printf("td-text: %s\n a-text: %s\nhref: %s\ntitle: %s\n",
$tdText, $aText, $a->attr('href'), $a->attr('title'));
}
Run Code Online (Sandbox Code Playgroud)
此代码的唯一问题是您不需要<td>标记中的所有文本.你如何解决这个问题取决于你.如果$aText它足够独特,您可以执行以下操作:
$tdText =~ s/\Q$aText\E.*//s;
Run Code Online (Sandbox Code Playgroud)
在最坏的情况下,您必须编写自己的函数来提取所需的文本元素,然后停止<br>(或者确定停止点).
| 归档时间: |
|
| 查看次数: |
1924 次 |
| 最近记录: |