Помогите спарсить телефон с Avito

Тема в разделе "Как сделать...", создана пользователем Burunduk1982, 19 фев 2015.

  1. Burunduk1982

    Burunduk1982

    Регистр.:
    26 мар 2007
    Сообщения:
    627
    Симпатии:
    112
     
  2. cyber_punker

    cyber_punker Создатель

    Регистр.:
    12 ноя 2014
    Сообщения:
    6
    Симпатии:
    10
    Начнем с того что Перейти по ссылке- нужно брать со страницы, это свое образная подпись.
    А CORS должен прописать avito, что б дать вам возможность общаться с ними.
    Если вам нужно в дальнейшем просто тупо сохранить этот номер то можно парсить просто php.
    Сначала получить ключ, а потом парсить как обычный json
     
  3. Burunduk1982

    Burunduk1982

    Регистр.:
    26 мар 2007
    Сообщения:
    627
    Симпатии:
    112
    7767bda2a10df1b9f849e67a7a8eb263 - получаю, но что с ним делать не знаю. Номер телефона планируется сохранять с прочими данными. Если располагаете временем и желанием - не могли бы вы привести пример парсинга номера на php? ниже скрипт, с помощью которого забираю код из ссылки:

     
  4. cyber_punker

    cyber_punker Создатель

    Регистр.:
    12 ноя 2014
    Сообщения:
    6
    Симпатии:
    10
    PHP:
    <?php
        define
    ('DOMAIN','m.avito.ru');
        
    define('SCHEME','https://');
        
    define('PATERN','~<a class="person-action button button-solid button-blue button-large action-show-number action-link link "(.*?)phone/(.*?)".*~is');
      
        
    $url 'https://m.avito.ru/kaluga/komnaty/komnata_10_m_v_5-k_33_et._514069333';

        function 
    get($url$ajax=false){
            
    $ch curl_init ();
           
    curl_setopt ($ch CURLOPT_URL $url);

            if(
    $ajax) {
               
    $headers = array(
                   
    'x-requested-with: XMLHttpRequest',
                   
    'accept: application/json, text/javascript, */*; q=0.01',
                   
    'accept-language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4,uk;q=0.2',
                   
    'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36',
                   
    'referer: ' str_replace(SCHEME DOMAIN,'',$url), // game of imitation :)
                
    );
                
    curl_setopt($chCURLOPT_HTTPHEADER$headers);
            }
           
    curl_setopt($chCURLOPT_RETURNTRANSFER );
           
    $content curl_exec($ch);
           
    curl_close($ch);
           return 
    $content;
        }
      
        
    $content get($url);

        
    preg_match_all(PATERN$content$matches);
        
    $key $matches[2][0];
        
    $phone get($url '/phone/' $key '?async'true);

        
    print_r($phone);
    Регулярка правда каличная но я не стал исправлять, мну лень
     
    Burunduk1982 нравится это.
  5. Burunduk1982

    Burunduk1982

    Регистр.:
    26 мар 2007
    Сообщения:
    627
    Симпатии:
    112
    Огромное спасибо за решение и помощь! на удаленном сервере все работает! но на локалке нет:
    Проверил $content - тоже пустая.
     
  6. cyber_punker

    cyber_punker Создатель

    Регистр.:
    12 ноя 2014
    Сообщения:
    6
    Симпатии:
    10
    Нужно смотреть. Возможно что-то с curl.
    Попробуйте сделать var_dump(get('https://www.nulled.cc/'));
    Посмотреть что выйдет.

    Код:
    Notice: Undefined offset: 0
    Это типа не спарсило по патерну. а я там не проверял есть ли 0 елемент во 2 елементе.
    Если туда будет попадать нормальный контент странички то такой ошибки не будет. Но проверку я бы добавил. К примеру при работе с проксями иногда прокся не рабочая показывает свою страничку, и дополнительно нужно проверять есть ли там нужный контент.
    А данном случае если isset($matches[2][0]) то можно смело парсить json, если нет то смотреть что там (кэп).
     
    Burunduk1982 нравится это.
  7. Burunduk1982

    Burunduk1982

    Регистр.:
    26 мар 2007
    Сообщения:
    627
    Симпатии:
    112
    Да, судя по-всему что-то с курлом:
    На удаленном сервере php5.2, на локалке 5.3, курл подключен.
     
  8. cyber_punker

    cyber_punker Создатель

    Регистр.:
    12 ноя 2014
    Сообщения:
    6
    Симпатии:
    10
    Дело точно не в версии пыхи. Локально curl не подключен.
    Как вы проверяете подключен ли он?
    Через cli (коносль) или веб сервер запускается скрипт?
    Какая система локально (win,*nix)?
    Попробуйте
    PHP:
    var_dump(extension_loaded('curl'));
    посмотреть.
     
    Burunduk1982 нравится это.
  9. Burunduk1982

    Burunduk1982

    Регистр.:
    26 мар 2007
    Сообщения:
    627
    Симпатии:
    112
    var_dump(extension_loaded('curl')); выдает bool(true)

    проверял через phpinfo();
    В php.ini раскомментирован, в папке /ext/ php_curl.dll лежит.
    Система win, пакет Denwer

    Не работает именно на локальной машине, на денвере.
     
  10. cyber_punker

    cyber_punker Создатель

    Регистр.:
    12 ноя 2014
    Сообщения:
    6
    Симпатии:
    10
    Ну тогда вряд ли помогу, вам сюда Перейти по ссылке
    Я на win с RC 7рки не сижу и врядли подскажу возможные подводные камни.
    Denwer вообще никогда не юзал, из известного Перейти по ссылке говорят норм.
     
    Burunduk1982 нравится это.