Большое спасибо,
PooH и
McZim!
Получилось так:
use strict;
uset HTML::TokeParser;
my $p = HTML::TokeParser -> new('file.html') or die "can't open file";
while (my $token = $p -> get_tag('div')) {
my $class = $token -> [1]{class};
if ($class eq 'some_class') {
my $text = $p -> get_trimmed_text('/div');
print $text;
}
}
Добавлено через 7 дней, 12 часов, 30 минут и 3 секунды:Появился новый вопрос
Есть страница file.html примерно следующего содержания
<html><body>
<DIV class="m_List"><a href="link1.html">link1</a></DIV>
<table class="modelRower">
<tr>
<td><DIV class="m_List"><a href="tablelink1.html">tablelink1</a></DIV></td>
</tr>
<tr>
<td><DIV class="m_List"><a href="tablelink2.html">tablelink2</a></DIV></td>
</tr>
</table>
<DIV class="m_List"><a href="link2.html">link2</a></DIV>
</body></html>
от сюда надо получить ссылки и тексты ссылок, которые находятся в таблице
Делаю так
use HTML::TokeParser;
$p = HTML::TokeParser -> new('file.html') or die "can't open file";
while ($token = $p -> get_tag('table')) {
$classtable = $token -> [1]{class};
if ($classtable eq "modelRower") {
while ($token2 = $p -> get_tag('div')) {
$class = $token2 -> [1]{class};
if ($class eq 'm_List') {
while ($token3 = $p -> get_tag('a')) {
$url = $token3 -> [1]{href} || "-";
$text3 = $p -> get_trimmed_text ('/a');
print "$text3 <b>$url</b><br>";
}
}
}
}
в результате получаем
tablelink1 tablelink1.html
tablelink2 tablelink2.html
link2 link2.htmlа надо только
tablelink1 tablelink1.html
tablelink2 tablelink2.htmlКак сделать так, что бы ссылки выдергивались только из таблицы?