[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Парсинг рекурсией
dotais
Всем привет, хочу написать парсер на основе simple_html_dom, но есть проблема
Вот функция, которая должна парсить все hrefы страниц и отдавать в виде массива

Функция принимает 3 параметра, но при 1 вызове ей нужно передать всего 1 это
$url, остальные параметры нужны при рекурсии: $i - итератор ассоциирующийся со странице(0 - первая, 1 - вторая и т.д) $pages массив с href страниц

и так:

function getPages($url,$i = 0,$pages = array()) {
//Получаем контент, находим нужный див, ищем ссылки на "следующая стр"
// "предыдущая стр"

$html = file_get_html($url);
$nav = $html->find("#patternedFoot", 0);
$nav = $nav->find("a");

//Полученых ссылок может быть 1 или 2:
//на 1 страницы сайта выводится ссылка только на следущую
//на последней только на предыдущую
// На остальных присутствуют по обе ссылки

//Условие для 1 и последней стр сайта

if(count($nav) == 1)
{
if($i == 0)
{
$url = 'http://www.core77.com/blog/furniture_design/'.$nav[0]->href;
$pages[$i] = $url;
$i++;
getPages($url,$i,$pages);
}
else
{
$url = 'http://www.core77.com/blog/furniture_design/'.$nav[0]->href;
$pages[$i] = $url;
return $pages;
}
}

//Условие для остальных страниц
elseif(count($nav) == 2)
{
$url = 'http://www.core77.com/blog/furniture_design/'.$nav[1]->href;
$pages[$i] = $url;
$i++;
getPages($url,$i,$pages);
}
else
{
$pages = "Ошибка парсинга страниц";
return $pages;
}
}



В итоге функция работает с пару минут и браузер выдает "Соединение сброшено"
...окей! Решил отбросить проблему с сайтом

Написал функцию, которая бы прошлась по страницам, подгружая при этом контент этих страниц, на данный момент страниц на сайте 4

function getPages(){
for($i = 1;$i<=4;$i++){
if($i == 1) {
$url[$i] = 'http://www.core77.com/blog/furniture_design/default.asp';
$html = file_get_html($url[$i]);
echo "done ".$i."<br />";
}
else
{
$url[$i] = 'http://www.core77.com/blog/furniture_design/default.asp?p='.$i;
$html = file_get_html($url[$i]);
echo "done ".$i."<br />";
}
}

return $url;
}

отрабатывает ~60сек и все выводит в лучшем виде.

Собственно прошу дать пинок в нужную сторону!))
Если что, то время выполнения скрипта стоит 3600сек
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.