Wednesday, August 20, 2014

Вытаскиваем все ссылки из HTML perl'ом

http://searchengines.guru/showthread.php?t=136923

Студент
 
Аватар для Small_Forward
 
Регистрация: 02.03.2006
Сообщений: 27
Репутация: 4292

По умолчанию Re: Вытаскиваем все ссылки из HTML perl'ом

Попробуйте так:

# преобразуем массив строк HTML-страницы в строку
$html = join("",@html);

# выбираем все ссылки со страницы
@html = $html =~ m/<A[^>]+?HREF\s*=\s*["']?([^'" >]+?)[ '"].*?>/sig;
Small_Forward вне форума   Ответить с цитированием
Старый 30.04.2007, 11:18   #3
Аспирант
 
Аватар для sergey_
 
Регистрация: 09.01.2007
Сообщений: 132
Репутация: -700

ТопикСтартер Re: Вытаскиваем все ссылки из HTML perl'ом

не работает 
sergey_ вне форума   Ответить с цитированием
Старый 30.04.2007, 11:52   #4
Студент
 
Аватар для Small_Forward
 
Регистрация: 02.03.2006
Сообщений: 27
Репутация: 4292

По умолчанию Re: Вытаскиваем все ссылки из HTML perl'ом

#!/usr/bin/perl
# Более подробно

print "Content-type: text/html\n\n";

# указываем путь к HTML-файлу
$file = "/путь к файлу/my_file.htm";

# читаем HTML-файл и пишем все в массив
open (FILE,"<$file"); @html=<FILE>; close(FILE);

# преобразуем массив строк HTML-страницы в строку
$html = join("",@html);

# выбираем все ссылки со страницы
@html = $html =~ m/<A[^>]+?HREF\s*=\s*["']?([^'" >]+?)[ '"].*?>/sig;

# выводим полученные ссылки, каждая - с новой строки
foreach (@html) {
print $_ . "<br>";
}
Small_Forward вне форума   Ответить с цитированием
Старый 30.04.2007, 12:27   #5
Аспирант
 
Аватар для sergey_
 
Регистрация: 09.01.2007
Сообщений: 132
Репутация: -700

ТопикСтартер Re: Вытаскиваем все ссылки из HTML perl'ом

интересно, а анкоры вытащить намного сложнее?
можете помочь со скриптом?
sergey_ вне форума   Ответить с цитированием
Старый 30.04.2007, 13:34   #6
Профессор
 
Регистрация: 14.01.2007
Сообщений: 869
Репутация: 122923

По умолчанию Re: Вытаскиваем все ссылки из HTML perl'ом

Цитата:
Сообщение от sergey_
интересно, а анкоры вытащить намного сложнее?
можете помочь со скриптом?
# выбираем все ссылки со страницы
@links= $html =~ m/<A[^>]+?HREF\s*=\s*["']?([^'" >]+?)[ '"].*?>/sig;
@anchors= $html =~ m/<A[^>]+?HREF\s*=\s*["']?[^'" >]+?[ '"].*?>([^<]+)/sig;

# выводим полученные ссылки, каждая - с новой строки
foreach (@links) {
print $_ . "<br>";
}
foreach (@anchors) {
print $_ . "<br>";
}


типа того...
Dinozavr на форуме   Ответить с цитированием
Старый 30.04.2007, 14:03   #7
Студент
 
Аватар для Small_Forward
 
Регистрация: 02.03.2006
Сообщений: 27
Репутация: 4292

По умолчанию Re: Вытаскиваем все ссылки из HTML perl'ом

Вариантов для реализации очень много, можно и так:

# выбираем все ссылки с анкорами со страницы
while ($html =~ s/<A[^>]+?HREF\s*=\s*["']?([^'" >]+?)[ '"].*?>([^<]+)//si) {
push @Ahtml, $2.": ".$1
}
# выводим полученные анкоры и ссылки, каждую пару - с новой строки
foreach (@Ahtml) {print $_ . "<br>";}

No comments:

Post a Comment