Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Как выдрать ссылки из html документа?
цитата
09/02/09 в 17:01
 shistik
Есть много .html файлов, где есть много ссылок с анкорами. Как можно из каждого .html файла вытащить все эти ссылки без анкоров, только урлы?
icon_wink.gif
цитата
09/02/09 в 17:25
 Corex
На PHP:

Код:
$data = file_get_contents('page.html'); // получить содержимое страниц(ы)

preg_match_all("/a[\s]+[^>]*?href[\s]?=[\s\"\']+([http].*?)[\"\']+.*?>"."([^<]+|.*?)?<\/a>/is", $data, $matches);

print_r($matches[1]); // $matches[1] содержит найденные URL'ы


Правда, этот код вытащит только все внешние ссылки и внутренние ссылки, начинающиеся на http://, локальные вроде <a href="/pages/23.html"> в список не попадут.
цитата
09/02/09 в 17:41
 lega_cobra
Код:
lynx -dump http://site/file | grep -A 1000 References | grep -v References | grep -v ^$


Потом можно очистить и от порядковых номеров.
цитата
09/02/09 в 17:43
 Axel-B
Парсер всех внешних и внутренних ссылок со страницы

В массиве $vnut только ссылки внутренние, в массиве $vnech только внешние ссылки.

Код:
$html=file_get_contents ('http://www.popsu.net');
$url='popsu.net';
$vnut=array();
$vnech=array();
preg_match_all('~<a [^<>]*href=[\'"]([^\'"]+)[\'"][^<>]*>(((?!~si',$html, $matches);
foreach ($matches[1] as $val) {
if (!preg_match("~^[^=]+://~", $val) || preg_match("~^[^://]+://(www\.)?".$url."~i", $val)) { $vnut[]=$val; }
else $vnech[]=$val;
}
$vnut=array_unique ($vnut);
$vnech=array_unique ($vnech);
print_r ($vnut);
print_r ($vnech);
цитата
09/02/09 в 17:59
 shistik
Парни, спасибо вам за помощь - но я вообще полный нуб в программинге и в .пхп в частности. icon_smile.gif Вы закинули мне эти коды, что с ними делать теперь, куда файлы с сылками класть?
Рейтинг проставил по максимуму. icon_smile.gif
цитата
09/02/09 в 18:18
 lega_cobra
shistik писал:
Парни, спасибо вам за помощь - но я вообще полный нуб в программинге и в .пхп в частности. icon_smile.gif Вы закинули мне эти коды, что с ними делать теперь, куда файлы с сылками класть?
Рейтинг проставил по максимуму. icon_smile.gif


Начни с того, где у тебя лежат этми файлы, под какой OS. И второе - что ты подразумеваешь под словом "вытащить". Вытащить куда, зачем? В каком виде ты хочешь получить вытащеное?
цитата
09/02/09 в 20:06
 Dantist
lega_cobra писал:
Код:
lynx -dump http://site/file | grep -A 1000 References | grep -v References | grep -v ^$


Потом можно очистить и от порядковых номеров.

Вот и с очисткой и с еще хорошими штуками :):
Код:
lynx -dump file | grep -A 1000 References | grep -v -E "References|Hidden|Visible" | grep -v ^$ | sed 's/ [0-9]*\. //g'

Очень изящно, кстати :))

ТС: как юзать:
Заходишь на сервак по PuTTY, переходишь в папку с html-ками.
Выполняешь:
Код:
lynx -dump file | grep -A 1000 References | grep -v -E "References|Hidden|Visible" | grep -v ^$ | sed 's/ [0-9]*\. //g'

Где вместо file подставляешь имя html-файла и получаешь на выходе список урлов с этого файла. (Список из 1000 урлов.. Если их больше 1000, то замени в строке 1000 на что-то тебе подходящее :))
цитата
11/02/09 в 11:21
 Captain Blood
TextPipePro - Извлечь адреса URL. Задаешь каталог и все файлы обрабатываются махом. Стукни мне, я тебе дам и все объясню.
цитата
11/02/09 в 12:35
 Well
Captain Blood: нельзя ли в двух словах описать как это сделать? а то качнул эту софтинку и не кину дупля как оно работает icon_smile.gif
цитата
11/02/09 в 14:24
 Captain Blood
У меня русская версия, поэтому если у Вас инглиш смотрите там уже как.
Значит "Фильтры для применения", выбираем там "Extract" - "извлечь адреса URL". На вкладке "Файлов в обработке" задаем путь до папки где лежат файлы и жмем внизу "Делать". В принципе все. Единственное что локальные программа так не вытянет. Тут надо использовать поиск внутри тегов или через "Извлечь соответствия" где синтаксисом Perl описать что надо дергать.


Эта страница в полной версии