Парсер auto.ru

Тема в разделе "Регулярные выражения", создана пользователем garrikos, 14 авг 2010.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. garrikos

    garrikos Создатель

    Регистр.:
    1 мар 2008
    Сообщения:
    27
    Симпатии:
    1
    Здравствуйте!
    Нужна помощь в создании скрипта, который смог бы выдирать телефоны с сайта auto.ru
    Пример страницы с которой нужно отпарсить телефон: http://cars.auto.ru/cars/used/sale/5785601-19b7.html
    Оплату гарантирую, пишите в личку.
     
    XUC нравится это.
  2. sw04

    sw04 seoplayer

    Регистр.:
    1 дек 2007
    Сообщения:
    601
    Симпатии:
    193
    с помощью php simple dom parser:
    PHP:
    // Create a DOM object
    $html = new simple_html_dom();

    // Load HTML from a string
    $html->load(file_get_contents('http://cars.auto.ru/cars/used/sale/5785601-19b7.html'));

    $e $html->find("div[class=sale-phones]"0);
    echo 
    $e->plaintext;
    примерно так.
     
    XUC нравится это.
  3. oleg3d

    oleg3d Создатель

    Регистр.:
    11 дек 2009
    Сообщения:
    34
    Симпатии:
    2
    Мой парсер - с таблицами разберетесь надеюсь
    PHP:
    <?php
    die('stub');

        require_once(
    'local.inc.php');
        require_once(
    'functions.inc.php');
        require_once(
    'curl.inc.php');

        
    //set_time_limit(1*60*60); //1 hour
        
    ignore_user_abort(true);

    $body='
    <div id="flush">
    </div>
    <SCRIPT>
    d = document.getElementById("flush");
    d.innerHTML = "";
    </SCRIPT>'
    ;
        
    main('Scanner'$body);
        
    trq();

        
    //get welcome page
        
    $URL='http://auto.ru';
        
    $cnt url_get($URL);
        if(
    $cnt==''){
            exit;
        }

        
    //vendors
        //<div class="cell-1"><a href="/acura/">ACURA</a></div>
        
    preg_match_all('|<div class="cell-1"><a href="([^"]+)">([^<]+)</a>|Ui',$cnt,$reg,PREG_SET_ORDER);
        
    $founded false;
        foreach(
    $reg as $serie){

            if(
    $serie[2]=='PEUGEOT')
                die;
                
    $founded true;

            if(!
    $founded)
                continue;

            
    //get vendor id
            
    $sql='select id from v_vendor where name="'.$mysql->escape($serie[2]).'"';
            
    $ret $mysql->query($sql);
            if(
    $ret)
            {
                
    $vendor_id $ret[0]['id'];
            }
            else
            {
                
    $sql='insert into v_vendor set name="'.$mysql->escape($serie[2]).'"';
                
    $vendor_id $mysql->query($sql);
            }

            
    mkdir('../img/car/'.$vendor_id0777);

            
    //series
            
    $cnt url_get('http://auto.ru'.$serie[1]);
            
    //<td><div class="cell-1"><a href=([^>^"]+)>([^<]+)</a></div></td>
            
    preg_match_all('|<td><div class="cell-1"><a href=(http://catalog.auto.ru/catalog/cars/[^>^"]+)>([^<]+)</a></div></td>|Ui',$cnt,$reg2,PREG_SET_ORDER);

            foreach(
    $reg2 as $subserie){

                
    //subserie
                //<td align=left valign=bottom>
                //<b>11113 Ока</b>
                //</td>
                //<td align=right valign="top">
                //<a href="/catalog/cars/model/1889.html"><img src="http://s.auto.ru/catalog_v3/images/2/small/24f73d70.jpg" title="Еще фотографии" border=0>
                
    $cnt url_get($subserie[1]);
                
    preg_match_all('/<td align=left valign=bottom>[\t\s\n]+<b>([^<]+)<\/b>[\t\s\n]+<\/td>[\t\s\n]+<td align=right valign="top">.+((<a href="[^"]+"><img src="([^"]+)" title="Еще фотографии" border=0>)|(Добавить отзыв))/Uis',$cnt,$reg3,PREG_SET_ORDER);

                foreach(
    $reg3 as $subsubserie){
                    
    $sql='select id from v_serie where vendor_id="'.$vendor_id.'" and name="'.$mysql->escape($subsubserie[1]).'"';
                    if(!
    $mysql->query($sql)){

                        
    //insert                    
                        
    $sql='insert into v_serie set vendor_id="'.$vendor_id.'", name="'.$mysql->escape($subsubserie[1]).'"';
                        
    $serie_id $mysql->query($sql);

                        
    $filename='';
                        if(
    count($subsubserie) == 5)
                        {
                            
    //get image
                            
    $img url_get($subsubserie[4]);
                            if(
    $img)
                            {
                                
    $filename $serie_id.'.jpg';
                                
    $f=fopen('../img/car/'.$vendor_id.'/'.$filename"w+");
                                if(
    $f){
                                    
    fwrite($f$img);
                                    
    fclose($f);
                                }

                                
    $sql='update v_serie set image="'.$filename.'" where id="'.$serie_id.'"';
                                
    $mysql->query($sql);
                            }

                            
    //get image2
                            
    $fileurl str_replace('small/'''$subsubserie[4]);
                            
    $img2 url_get($fileurl);
                            if(
    $img2)
                            {
                                
    $filename2 str_replace('.jpg''_.jpg'$filename);
                                
    $f=fopen('../img/car/'.$vendor_id.'/'.$filename2"w+");
                                if(
    $f){
                                    
    fwrite($f$img2);
                                    
    fclose($f);
                                }
                            }
                        }
                    }
                }
            }
        }
    ?>
     
    XUC нравится это.
  4. pixelranger

    pixelranger

    Регистр.:
    24 июн 2006
    Сообщения:
    386
    Симпатии:
    117
    А не мог бы выложить весь парсер объявлений?
     
    XUC нравится это.
Статус темы:
Закрыта.