The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Поиск всех ссылок на сайте"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы WEB технологии (PHP)
Изначальное сообщение [ Отслеживать ]

"Поиск всех ссылок на сайте"  +/
Сообщение от qwer email(ok) on 01-Авг-08, 16:07 
В общем задача такая. Требуется написать рекурсивную функцию для поиска всех ссылок внутри сайта. Допустим у меня есть сайт http://aaa.ru. Надо чтобы функция обходила сайт и вывела в файл или в массив все ссылки, как с первой страницы так и со всех внутренних, причем повторяющихся не должно быть. Давно сам не сталкивался с рекурсиями, если кто может подскажите.

Для вывода всех ссылок с главной страницы код у меня есть:

function showTree($home)
{
  static $count;  
  $s=file_get_contents($home);
  //Обработка $s
  $links = get_link($s);
  for($i=0; $i < count($links); $i++){
   $lnk=trim($links[$i][2]);
   $us=false;
   for ($j=0;$j<count($tree);$j++){
    if ($tree[$j]==$lnk){
     $us=true;    
    }
   }
   if (!$us){
    $count = (isset($count)) ? ++$count : 0;
    $tree[$count]=$lnk;      
   }  
  }
}

function get_link($text)
{
    $count = preg_match_all("/<a[^>]+href=([\"']?)([^\\s\"'>]+)\\1/is", $text, $matches, PREG_SET_ORDER);
/*   for($i=0; $i < count($matches); $i++) {
        $links[$matches[$i][2]] = 1;

    } */
    return $matches;
}

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Поиск всех ссылок на сайте"  +/
Сообщение от Pahanivo email(ok) on 01-Авг-08, 16:14 
Мож кто за меня работу сделает ... ))

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "Поиск всех ссылок на сайте"  +/
Сообщение от qwer email(ok) on 01-Авг-08, 16:55 
>Мож кто за меня работу сделает ... ))

Не если в ломы помощь, то проблем нету. Я логику сам понимаю, просто не знаю как правильно сделать рекурсию. Точнее сделать точку останова!

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "Поиск всех ссылок на сайте"  +/
Сообщение от Pahanivo email(ok) on 04-Авг-08, 11:18 
>>Мож кто за меня работу сделает ... ))
>
>Не если в ломы помощь, то проблем нету. Я логику сам понимаю,
>просто не знаю как правильно сделать рекурсию. Точнее сделать точку останова!
>

Песдуем по рекурсии вдоль страниц - найденные URLы складываем в базу/массив или кудато еще. Если конкретный урл уже есть в найденном - прекращаем ветвь рекурсии. Если на странице нет ссылок - тоже прекращаем. Думаю еще несколько условий стопа придется обработать. Скажем если ты будешь ломится на сайт с php сессиями, куки у тя соотв не обрабатываются - может быть вариант что php будет по каждому запросу генерить уникальный session id. Следовательно можно бесконечно перебирать.

Вообще задача не такая простая как тебе кажется.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "Поиск всех ссылок на сайте"  +/
Сообщение от qwer email(ok) on 04-Авг-08, 17:13 
Попробую, если что получиться дам знать.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

5. "Поиск всех ссылок на сайте"  +/
Сообщение от qwer email(??) on 06-Авг-08, 15:42 
>Попробую, если что получиться дам знать.

В общем сделал тупо, если надо скину код

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

6. "Поиск всех ссылок на сайте"  +/
Сообщение от angra (ok) on 07-Авг-08, 03:56 
а на перле аж несколько строчек, при желании даже в однострочник можно вместить. Но на сях это конечно для реальных пацанов :)
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

7. "Поиск всех ссылок на сайте"  +/
Сообщение от kortes (ok) on 01-Июн-10, 15:32 
>>Попробую, если что получиться дам знать.
>
>В общем сделал тупо, если надо скину код

Столкнулся с той же проблемой! Вы не могли бы поделиться кодом?

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

8. "Поиск всех ссылок на сайте"  +/
Сообщение от qwer email(??) on 06-Июн-10, 16:16 
>>>Попробую, если что получиться дам знать.
>>
>>В общем сделал тупо, если надо скину код
>
>Столкнулся с той же проблемой! Вы не могли бы поделиться кодом?

Давайте завтра напишите, сегодня дел очень много, помимо этого!

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру