Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Как выдрать ссылки из html документа?
Новая тема
Ответить
цитата
09/02/09 в 17:01
shistik
Есть много .html файлов, где есть много ссылок с анкорами. Как можно из каждого .html файла вытащить все эти ссылки без анкоров, только урлы?
цитата
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
Парни, спасибо вам за помощь - но я вообще полный нуб в программинге и в .пхп в частности.
Вы закинули мне эти коды, что с ними делать теперь, куда файлы с сылками класть?
Рейтинг проставил по максимуму.
цитата
09/02/09 в 18:18
lega_cobra
shistik писал:
Парни, спасибо вам за помощь - но я вообще полный нуб в программинге и в .пхп в частности.
Вы закинули мне эти коды, что с ними делать теперь, куда файлы с сылками класть?
Рейтинг проставил по максимуму.
Начни с того, где у тебя лежат этми файлы, под какой 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:
нельзя ли в двух словах описать как это сделать? а то качнул эту софтинку и не кину дупля как оно работает
цитата
11/02/09 в 14:24
Captain Blood
У меня русская версия, поэтому если у Вас инглиш смотрите там уже как.
Значит "Фильтры для применения", выбираем там "Extract" - "извлечь адреса URL". На вкладке "Файлов в обработке" задаем путь до папки где лежат файлы и жмем внизу "Делать". В принципе все. Единственное что локальные программа так не вытянет. Тут надо использовать поиск внутри тегов или через "Извлечь соответствия" где синтаксисом Perl описать что надо дергать.
Новая тема
Ответить
Эта страница в полной версии