1. Гость, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

Парсинг Яндекс Маркет

Тема в разделе 'PHP', создана пользователем Botchal, 8 апр 2011.

  1. TopicStarter Overlay

    Botchal MMORPG-DEVS.RU Пользователи

    Сообщения:
    182
    Лайки:
    66
    Репутация:
    0
    Привожу код скрипта который вытягивает среднюю, минимальную и максимальную цену для определённого товара, с таким скриптом можно хорошо сэкономить время если вы бухгалтер :D или администратор вэб магазина) скрипту надо давать ГЕТ запрос text с текстом запроса. Алгоритм зайдёт на маркет, возмёт цены и выведет их, если вы программист то вам интересны 3 последних переменные в конце а именно
    Чё с ними делать решайте сами, думаю дольше у вас пойдёт сравнение цен из БД и переоценка если надо.
    Алгоритм поддерживает корректировку запроса (имени товара). Тоесть если по вашему запросу цен не найдено то запрос изменится на тот который предложил яндекс например ваш запрос

    PanasonicVIERA TX-PR42 GT20 изменится на Panasonic VIERA TX-PR42 GT20

    Тоесть все случайные пробелы и прочие опечатки не страшны!

    ТРЕБОВАНИЯ: Нужно расширение php - cURL. На порядочных хостингах оно есть, на локале у вас хз, поставите

    Код:
    <?php 
    function get_prices($data){ 
    //Пилим шаг 1 
    $pat_1_1="</div><div class=\"price\"><span class=\"b-prices__num\">.*?\s.*?</span><span class=\"b-prices__currency\">"; 
    $pat_1_2="</span></span></div><div class=\"pricesGraph\">"; 
    preg_match("|".$pat_1_1."(.*)".$pat_1_2."|sei", $data, $price); 
    $data=$price[0]; 
    //Пилим шаг 2 
    $data=str_ireplace("</span>","|",$data); 
    $data=str_ireplace("<span class=\"b-prices b-prices__range\">","|",$data); 
    $data=str_ireplace("</div>","|",$data); 
    $data=str_ireplace("<span class=\"b-prices__num\">","|",$data); 
    $data=str_ireplace("<div class=\"price\">","|",$data); 
    $data=str_ireplace("<span class=\"b-prices__currency\">","|",$data); 
    $data=str_ireplace("В ","|",$data); 
    $data=explode("|",$data); 
    unset($price); 
    $price=array(); 
    array_push($price, preg_replace ("/[^0-9]/","",iconv("utf-8", "windows-1251", $data[3])));//средняя 
    array_push($price, preg_replace ("/[^0-9]/","",iconv("utf-8", "windows-1251", $data[9])));//минимальная 
    array_push($price, preg_replace ("/[^0-9]/","",iconv("utf-8", "windows-1251", $data[11])));//максимальная 
    return $price; 
    } 
    function get_page_html($text){ 
    $ch=curl_init("http://market.yandex.ru/search.xml?text=".urlencode($text)."&cvredirect=1"); 
    //curl_setopt ($ch, CURLOPT_HEADER, 0); // включаем заголовки в результат 
    //curl_setopt ($ch, CURLOPT_NOBODY, 0); 
    //curl_setopt($ch, CURLOPT_REFERER, $referrer); // рефер 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // Если лока 
    curl_setopt($ch, CURLOPT_TIMEOUT, 15);//Скок ждём ответа 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);// не выводим 
    $html = curl_exec($ch); 
    curl_close($ch); 
    return $html; 
    } 
    function get_correct_text($data){ 
    $pat_1_1="<strong>.*?<a href=\"/search.xml"; 
    $pat_1_2="</a>.*?</strong></p><p class=\"no-found\"><b>"; 
    preg_match("|".$pat_1_1."(.*)".$pat_1_2."|sei", $data, $price); 
    $data=str_replace("?text=","",$price[1]); 
    $data=explode(">",$data); 
    $data=explode("&", $data[0]); 
    return urldecode($data[0]); 
    } 
    $text=$_GET['text']; 
    $data = get_page_html($text); 
    $price=get_prices($data); 
    if($price[0]=="" and $price[1]=="" and $price[2]==""){ 
    $text_correct=get_correct_text($data); 
    echo"<br> Корректировка запроса: c <b>".$text."</b> на <b>".$text_correct."</b> </br>"; 
    $data = get_page_html($text_correct); 
    $price=get_prices($data); 
    } 
    
    echo$price[0]."<hr>"; 
    echo$price[1]."<hr>"; 
    echo$price[2]."<hr>"; 
    ?>
    



    ymp.jpg
    1 человеку нравится это.
  2. pifagor Пользователи

    Сообщения:
    57
    Лайки:
    16
    Пол:
    Мужской
    Репутация:
    0
    Спасибо мне очень понадобилось! <_<
  3. TopicStarter Overlay

    Botchal MMORPG-DEVS.RU Пользователи

    Сообщения:
    182
    Лайки:
    66
    Репутация:
    0
    там если возникнут проблемы с капчей, подскажу на ушко как обойти, в паблик жалко писать
Черновик сохранён Черновик удалён

Поделиться этой страницей