Парсер Яндекс Каталога

Тема в разделе ".:: Готовые решения", создана пользователем terkin, 27 ноя 2007.

Статус темы:
Закрыта.
  1. terkin

    terkin

    Регистр.:
    9 дек 2006
    Сообщения:
    513
    Симпатии:
    162
    Вобщем встетил на searchengines код для парсинга ПДА версии ЯК, и чуть его дописал что бы он парсил все страницы раздела и работал на РНР 4:
    PHP:
    <?
    set_time_limit(0);
    $cat 'Computers/Internet/Catalogues/'// указываем раздел который нужно парсить
    $np_pat '/<a target="_self" href="(.*)"><font color="#333333">след.<\/font><\/a>/U';
    $yc_pat '/<li>\n<font><a.*href="(.*)".*>.*<\/li>/isU';
    $delay '3';
    $a=1;
    $url 'http://pda.yaca.yandex.ru/yca/tungrp/cat/'.$cat;
    $data file_get_contents($url);
    $col=preg_match_all("!<h3>(.*?)</h3>!si",$data,$ok);
    $col=substr($ok[0][0],strpos($ok[0][0],":")+1);
    $col=trim($col);
    $col_pages=$col/20;



    for(
    $i=0;$i<$col_pages;$i++)
    {
    $page=$i.".html";
    $url 'http://pda.yaca.yandex.ru/yca/tungrp/cat/'.$cat.$page;

    while (
    $data file_get_contents($url)) {
        
    #$data = iconv('utf-8', 'cp1251', $data);
        
    preg_match_all($yc_pat$data$o1PREG_SET_ORDER);
        foreach (
    $o1 as $o) echo $a++.".".$o[1]."<br>"flush();
        
    preg_match($np_pat$data$o2);
        
    $url = ($o2 $o2[1]:FALSE);

        
    sleep($delay);
    }
    }
    ?>

     
    Буян, see, dotsenko и 2 другим нравится это.
  2. terkin

    terkin

    Регистр.:
    9 дек 2006
    Сообщения:
    513
    Симпатии:
    162
    ну у меня работает, я им напарсил урлов, какая у тебя ошибка напиши
     
  3. terkin

    terkin

    Регистр.:
    9 дек 2006
    Сообщения:
    513
    Симпатии:
    162
    у тебя может проблемма возникает из за отключеного на хосте set_time_limit, попробуй закоментировать эту строку set_time_limit(0);
     
  4. judgefog

    judgefog

    Регистр.:
    12 авг 2006
    Сообщения:
    487
    Симпатии:
    335
    подтверждаю - работает;
    только дело может быть не только во времени,
    возможен запрет обращаться по урлу в file_get_contents
    а еще он дубли выдает
     
  5. Juri

    Juri

    Заблокирован
    Регистр.:
    5 окт 2007
    Сообщения:
    1.065
    Симпатии:
    197
    я на локалке выдал. написал что не может соедиться
     
  6. madcap

    madcap Постоялец

    Заблокирован
    Регистр.:
    17 сен 2006
    Сообщения:
    147
    Симпатии:
    26
    Отлично работает !

    Я запустил его на Денвере, так он мне мигом 220 ссылок на каталоги показал.
    Жаль сохранять в ручную надо... Хотя это уже детали. :yahoo:
     
  7. everest

    everest

    Регистр.:
    20 дек 2006
    Сообщения:
    197
    Симпатии:
    20
    Может не работает потому, что много раз пробовали скрипт и яндекс запретил доступ?

    я с таким сталкивался еще лет 5 назад...
     
  8. tim12

    tim12

    Регистр.:
    29 апр 2006
    Сообщения:
    159
    Симпатии:
    49
    подскажите , что изменить в скрипте чтобы он непроставлял номера сайтов
     
  9. D@nil

    D@nil

    Регистр.:
    1 окт 2006
    Сообщения:
    338
    Симпатии:
    122
    замени

    foreach (
    $o1 as $o) echo $a++.".".$o[1]."<br>"; flush();

    на

    foreach ($o1 as $o) echo $o[1]."<br>"; flush();
     
  10. masterx15

    masterx15

    Регистр.:
    9 мар 2008
    Сообщения:
    213
    Симпатии:
    71
    ТС, а можете дописать чтоб парсились только домены? без подкаталогов, страниц и т.д? Заранее благодарю.
     
Статус темы:
Закрыта.