СКРИПТ: Парсер Яндекс Маркета.

Сбор и анализ всего что можно собрать из сети.
Ответить
Аватара пользователя
XwebDeveloper
Сообщения: 51
Зарегистрирован: 13 ноя 2017, 12:53

СКРИПТ: Парсер Яндекс Маркета.

Сообщение XwebDeveloper » 28 фев 2020, 19:40

Скрипт пример парсинга Яндекс Маркета.

Версия программы: Human Emulator Studio 7.0.45.

Браузеры: Chromium и Firefox.

Логика: Из файла берём категории товаров и вбиваем их в поиск яндекс маркета. После чего проходим по выдаче и собираем данные делаем переход в каждый товар из выдачи.

Скрипт состоит:
Запускаемый файл - yandex_market.php.
Файл functions.php, в котором содержатся все основные функции скрипта. В этом же файле находится функция get_market_info($market_key), с помощью которой и выполняется разбор данных товаров.
В папке data файл с категориями markets.txt.

Формат файла с категориями :
ноутбук
монитор
клавиатура
мышь


Скачать скрипт
yandex_market.zip
(3.88 КБ) 100 скачиваний

Код скрипта:
<?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
нет
ГЛОНАСС
нет
Веб-камера
есть
ТВ-тюнер
нет
Пульт ДУ
нет
Стилус
нет
Металлический корпус
нет
Ударопрочный корпус
нет
Влагозащищенный корпус
нет
Пассивное охлаждение
нет
Перед покупкой уточняйте характеристики и комплектацию у продавца.
=======================================

и т.д.
Запрос на создание скриптов viewforum.php?f=61

Ответить