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'));
}
Единственная проблема с этим кодом заключается в том, что вам не нужен весь текст в теге <td>
.Как вы исправите это зависит от вас.Если $aText
достаточно уникален, вы можете сделать что-то вроде:
$tdText =~ s/\Q$aText\E.*//s;
В худшем случае вам придется написать собственную функцию для извлечения нужных текстовых элементов, останавливаясь на <br>
(или как вы определяете точку остановки).