Парсинг яндекс.каталога

Тема в разделе "Сервисы", создана пользователем Anu, 7 фев 2009.

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

    Anu Постоялец

    Регистр.:
    19 окт 2007
    Сообщения:
    137
    Симпатии:
    13

    на сайте http://sapedigest.ru/2009/01/parsing-yandekskataloga-i-izbrannoe-v-sape/ нашла скрипт парсинга яки.
    но скрипт был не очень удобен тем, что он парсил только первые несколько страниц.
    в итоге я его подкорректировала, теперь парсится полностью вся категория.

    важно: для того, чтобы ваш ip не забанился (особенно если у вас выделенный внешний, устанавливайте значение sleep (задается в секундах) 3-5.

    PHP:
    <form method="GET" action="">
    <input type="text" name="url" value="<?php if(isset($_GET['url'])) echo $_GET['url']; ?>" style="width: 500px">
    <input type="submit" value="Parse it!">
    </form>
     <pre>
     
    <?php
    $last_grabbed 
    1;
    $last_url 0;
    while(
    $last_grabbed!=$last_url){
        if (isset(
    $_GET['url']))
        {
            
    sleep('3');
                
    $urls = array();
                
    $first_url $_GET['url'];
                
    array_push($urls$first_url);
               
                
    $text file_get_contents($first_url);
               
                
    $text iconv('windows-1251''utf-8'$text);
               
                
    preg_match_all("/<a target=\"_self\" href=\"(.*)\">\d+<\/a>/isU"$text$matches);
               
                foreach(
    $matches[1] AS $i=>$val) {
                        
    array_push($urls'http://yandex.ru'.$val);
                }
               
                
    //$count = 0;
                //$count2 = 0;
                //$parsed_urls = null;
                
    $last_url null;
                
    //$result = null;
                
    $last_grabbed $_GET['url'];
                
    $_GET['url'] = $urls[count($urls)-1];
                foreach (
    $urls AS $i => $url)
                {
                        
    $last_url $url;
                        
    $parsed_urls .= $url.'
        '
    ;
                       
                        
    $text file_get_contents($url);
                        
    $text iconv('windows-1251''utf-8'$text);
                       
                        
    preg_match_all("/<span style=\"color: rgb\(0, 102, 0\);\">([\d\w\.\-]*)<\/span>/isU"$text$matches);
                        foreach(
    $matches[1] AS $i=>$val) {
                                
    $count++;
                                
    $count2++;
                                
    $result .= 'http://'.str_replace('www.'''$val).'
        '
    ;
                                if (
    $count2 == 500) {
                                        
    $result .= '
         
        '
    ;
                                        
    $count2 0;
                                }
                        }
                }
        }

    }
    echo 
    $result;
    echo 
    '<br>всего: '.$count;
    echo 
    '<br>отпарсено: '.$parsed_urls;
    ?>

    надеюсь кому-то пригодится :)

    p.s. если кто знает аналогичные более функциональные скрипты - велкам!
     
  2. masterx15

    masterx15

    Регистр.:
    9 мар 2008
    Сообщения:
    213
    Симпатии:
    71
    Чем этот не устраивает?

    http://barykin.com/yca
     
  3. arvinoff

    arvinoff Писатель

    Регистр.:
    6 сен 2009
    Сообщения:
    2
    Симпатии:
    6
    a 4to eto takoe "pirsing yandex kataloga" ??
     
  4. koshak_gav

    koshak_gav Создатель

    Регистр.:
    25 авг 2009
    Сообщения:
    34
    Симпатии:
    1
    поясните пожалуйста как им точнее пользоваться??
     
  5. ant1-pa

    ant1-pa

    Регистр.:
    3 ноя 2007
    Сообщения:
    448
    Симпатии:
    95
    чтобы понять как им пользоваться, ты сначала его запусти, и тогда у тебя отпадут вопросы =)
    запускать надо как минимум на виртуалке, гугли в ПС denwer
     
  6. smithws

    smithws

    Регистр.:
    19 июн 2008
    Сообщения:
    481
    Симпатии:
    153
    Anu,Тот скрипт что ты выложила, не запускается никаким браузером на денвере.
    (Звависае на 38% открытия)
    Тот, который на сайте, с которого ты скачала, запускается, но когда вводишь руборику и жмешь -парсить,выдает ошибки в этой строке -Z:\home\localhost\www\yakapars2.php on line 15
    $text = file_get_contents($first_url);
     
Статус темы:
Закрыта.