Версия программы: Human Emulator Studio 7.0.45.
Браузеры: Chromium и Firefox.
Логика: Из файла берём категории товаров и вбиваем их в поиск яндекс маркета. После чего проходим по выдаче и собираем данные делаем переход в каждый товар из выдачи.
Скрипт состоит:
Запускаемый файл - yandex_market.php.
Файл functions.php, в котором содержатся все основные функции скрипта. В этом же файле находится функция get_market_info($market_key), с помощью которой и выполняется разбор данных товаров.
В папке data файл с категориями markets.txt.
Формат файла с категориями :
ноутбук
монитор
клавиатура
мышь
Скачать скрипт
Код скрипта:
<?php $xhe_host ="127.0.0.1:7010"; // The following code is required to properly run XWeb Human Emulator require("../../Templates/xweb_human_emulator.php"); // ////////// настройки скрипта////////////////// // файл с товарами для разбора $a_markets = file("data/markets.txt"); // глубина прохода в поисковые результаты $cnt_pages = 15; // текущая страница $crnt_page =1; $wt =3; // режим отладки $dbg=true; // задаём tor в качестве прокси $cur_proxy = "socks5://127.0.0.1:9150"; $b_use_proxy = false; // /////////////////// дополнительные модули ///////////////////// // функции require_once("functions.php"); // ///////////////////// script ///////////////////////////////////////////////////////// debug_mess(date("\[ d.m.y H:i:s\] ")." скрипт запустили"); if($b_use_proxy) { // устанвливаем прокси на все соединения $browser->enable_proxy("",$cur_proxy); sleep(3); } $browser->close_all_tabs(); // пройтись по всем товарам for($j=0;$j<count($a_markets);$j++) { // обнулим страницы перед поиском $crnt_page =1; // перейти в yndex market $browser->navigate("http://market.yandex.ru"); // вводим ключевое слово $input->set_value_by_name("text",$a_markets[$j]); // нажимаем кнопку найти $btn->click_by_inner_text("Найти"); sleep($wt); // ходим до тех пор пока не кончатся ссылки по цифрам while(true) { // получаем все ссылки из выдачи $hrefs = $anchor->get_all_hrefs_by_attribute("class","link n-link_theme_blue link_ty",false,"<br>"); $arr_hrefs=explode("<br>",$hrefs); // заходим по каждой ссылке foreach($arr_hrefs as $href) { echo $href."<br>"; // переходим по ссылке $anchor->click_by_href($href, false); sleep($wt); $browser->set_active_browser(1); // ждём появление элемента $span->wait_element_exist_by_inner_text("Описание", true); // получить информацию по товару get_market_info(trim($a_markets[$j])); // закрываем все закладки $browser->close_all_tabs(); $browser->set_active_browser(0); $app->pause(0); } // не першли на следующую страницу if(!next_page($crnt_page)) break; } } // закрыть базу mysql_close($mysql_bd); debug_mess(date("\[ d.m.y H:i:s\] ")." скрипт закончил работу<br>"); // Quit $app->quit(); ?>
Функция сбора:
// получить информацию по товару function get_market_info($market_key) { global $h1,$anchor,$image,$div,$span; // название ноутбука $str_mkt_name=trim($h1->get_inner_text_by_attribute("class", "title", false)); $str_mkt_name=str_replace(" новинка","",$str_mkt_name); $str_mkt_name=str_replace(mb_ucfirst($market_key),"",$str_mkt_name); // src картинки $str_mkt_img= $image->get_attribute_by_attribute("class","image",true,"src"); // Коротко о товаре $str_mkt_mdash= $div->get_inner_text_by_attribute("class", "n-product-content-block__content"); $str_mkt_mdash = trim(str_replace("Все характеристики","",$str_mkt_mdash)); // переходим на цены $span->click_by_inner_text("Цены"); // минимальная цена $str_mkt_price_avg = $span->get_inner_text_by_attribute("class", "price"); // диапозон цен $arr_price=$div->get_all_inner_texts_by_attribute("class", "price", true); $str_mkt_price_range=implode(" ",$arr_price); // переходим к получению всех характеристик товара $span->click_by_inner_text("Характеристики"); // все характеристики тут можно получать как виде html так и ввиде текста $str_mkt_all_prop= $div->get_inner_text_by_attribute("data-apiary-widget-name","/ProductSpecs",false); // результирующая $sql = $str_mkt_name.' '.$str_mkt_price_avg.' '.$str_mkt_price_range.' '.$str_mkt_img.' '.$str_mkt_mdash.' '.$str_mkt_all_prop; // вывести собранную инфу echo $sql."<br>=======================================<br>"; return true; }
Результат:
/product--noutbuk-asus-vivobook-15-x512/518204228?show-uid=15829078694127729161316001&nid=54544&context=search 21 620 ₽ 23 610 ₽ 22 400 ₽ 56 180 ₽ 33 785 ₽ 48 630 ₽ 52 580 ₽ 51 590 ₽ 32 590 ₽ 29 501 ₽ 54 244 ₽ //avatars.mds.yandex.net/get-mpic/1884605/img_id5160406708652117343.png/1hq Видеокарта: Intel UHD Graphics 620 Подробные характеристики Разрешение экрана 1366x768, 1920x1080 Тип видеокарты встроенная, дискретная, дискретная и встроенная Видеокарта AMD Radeon RX 540, AMD Radeon Vega 3, AMD Radeon Vega 8, Intel UHD Graphics 620, NVIDIA GeForce MX250 Конфигурация накопителей HDD, SSD Цвет Тип Тип ноутбук Операционная система Linux Экран Диагональ экрана 15.6 " Разрешение экрана 1366x768 Широкоформатный экран есть Тип матрицы экрана IPS Сенсорный экран нет Мультитач-экран нет Светодиодная подсветка экрана есть Поддержка 3D нет Видео Тип видеокарты встроенная Видеокарта Intel UHD Graphics 620 Две видеокарты нет Устройства хранения данных Конфигурация накопителей HDD Оптический привод DVD нет Слоты Слоты расширения/карты памяти microSD Беспроводная связь Wi-Fi есть Стандарт Wi-Fi 802.11ac Bluetooth есть 4G LTE нет 3G нет Подключение Встроенная сетевая карта нет Устройства ввода Устройства позиционирования Touchpad Сенсорная панель Touch Bar нет Звук Наличие колонок есть Наличие сабвуфера нет Наличие микрофона есть Дополнительно GPS нет ГЛОНАСС нет Веб-камера есть ТВ-тюнер нет Пульт ДУ нет Стилус нет Металлический корпус нет Ударопрочный корпус нет Влагозащищенный корпус нет Пассивное охлаждение нет Перед покупкой уточняйте характеристики и комплектацию у продавца. ======================================= и т.д.