imoto Опубликовано 3 июля, 2014 Жалоба Поделиться Опубликовано 3 июля, 2014 День добрый, возникла проблема с парсером характеристик, заметил что и на демо не парсит, хотя товар есть в маркете, к примеру "Samsung Galaxy S5" Есть ли решение данной проблемы ? Цитата Ссылка на сообщение Поделиться на другие сайты
osben Опубликовано 4 июля, 2014 Жалоба Поделиться Опубликовано 4 июля, 2014 День добрый, возникла проблема с парсером характеристик, заметил что и на демо не парсит, хотя товар есть в маркете, к примеру "Samsung Galaxy S5" Есть ли решение данной проблемы ?вообще работает, проблема в выдаче Яндекс, так как по етому запросу (http://market.yandex.ru/search.xml?text=Samsung+Galaxy+S5&nopreciser=1) он выдает модели не из каталога, а просто предложение магазинов, Цитата Ссылка на сообщение Поделиться на другие сайты
imoto Опубликовано 4 июля, 2014 Автор Жалоба Поделиться Опубликовано 4 июля, 2014 т.е те телефоны которые не в каталогах на них характеристику вытащить невозможно.А есть ли аналог какой нить чтоб не с yandexa парсил а с других магазинов ? Цитата Ссылка на сообщение Поделиться на другие сайты
osben Опубликовано 5 июля, 2014 Жалоба Поделиться Опубликовано 5 июля, 2014 т.е те телефоны которые не в каталогах на них характеристику вытащить невозможно.А есть ли аналог какой нить чтоб не с yandexa парсил а с других магазинов ?ето надо писать индивидульно под каждый магазин + не факт что ето возможно. (к примеру на сайте донара нету поиска) Цитата Ссылка на сообщение Поделиться на другие сайты
pasha814 Опубликовано 11 июля, 2014 Жалоба Поделиться Опубликовано 11 июля, 2014 Что-то у меня перестал работать парсер характеристик товаров.Парсер картинок работает как и раньше. Яндекс Маркет ничего не менял, никто не в курсе? Цитата Ссылка на сообщение Поделиться на другие сайты
Scodch Опубликовано 12 июля, 2014 Жалоба Поделиться Опубликовано 12 июля, 2014 То же самое, автоподбор свойств перестал работать. Походу Яндекс что-то поменял. Цитата Ссылка на сообщение Поделиться на другие сайты
LUN Опубликовано 12 июля, 2014 Жалоба Поделиться Опубликовано 12 июля, 2014 У меня такая проблема с понедельника...Я уже виду борьбу с хостингом и Яндекс-маркетом, и походу проблему мою решать никто не собирается. Что было мной сделано...1) Сначало я подумал что дело в max_input_varsя увеличил это значение но ничего не изменилось.2) потом Мы с хостингом пришли к мнению, что сайт размещается на общих условиях и что с моего IP есть какой-то сайт который который спамит на яндекс, из-за чего был заблокирован IP хостинга.Решили заказать услугу Индивидуальный IP адрес.Теперь у сайта свой собственный IP на котором больше нет никаких сайтов.Проблема не исчезла!Вот что пишет яндекс на мои письма =========================Здравствуйте!На сервисе Яндекс.Маркет с Вашего компьютера было зафиксировано большое количество запросов служебного характера и/или с частотой, недоступной человеку.Возможно, Вы используете программное обеспечение или дополнительные плагины к браузерам, производящие автоматические запросы к сервису. В этом случае, чтобы снова использовать поиск Яндекса, Вам необходимо отключить программное обеспечение, плагины, тулбары и т.д., которые могут задавать такого рода запросы.Если же Вы не задавали запросов такого рода, то, пожалуйста, проверьте Ваш компьютер антивирусом, поскольку они могут задаваться каким-либо плагином к браузеру или иной программой без Вашего ведома.=====================================================Я отправил эту переписку своему хостингу, они сказали что дело в моем сайте, и что нужно устранять проблему внутриним вмешательством. Что будем делать господа ? Цитата Ссылка на сообщение Поделиться на другие сайты
pasha814 Опубликовано 12 июля, 2014 Жалоба Поделиться Опубликовано 12 июля, 2014 Ну, меня Яндекс точно не мог в бан добавить, т.к. запросов было реально мало.LUN вон тоже IP менял, ничего не изменилось, так что думаю проблема в самом парсере. Цитата Ссылка на сообщение Поделиться на другие сайты
Mozzie Опубликовано 12 июля, 2014 Жалоба Поделиться Опубликовано 12 июля, 2014 Согласен что в парсере... скорее всего яша заблочил парсер нашей симплы=( и нужно новую писать есть кто сможет написать новый парсер???? готов обсудить!!! в личке. Цитата Ссылка на сообщение Поделиться на другие сайты
pasha814 Опубликовано 12 июля, 2014 Жалоба Поделиться Опубликовано 12 июля, 2014 Готов поучаствовать финансово в работе над новым парсером. Цитата Ссылка на сообщение Поделиться на другие сайты
LUN Опубликовано 12 июля, 2014 Жалоба Поделиться Опубликовано 12 июля, 2014 Считаю что в такой ситуации нужно всем объеденится и решить проблему, т.к. она массово проявляется на всей Симпле.Я удивляюсь что активность этой темы так мала, неужеле у других пользователей все работает ? Цитата Ссылка на сообщение Поделиться на другие сайты
pasha814 Опубликовано 12 июля, 2014 Жалоба Поделиться Опубликовано 12 июля, 2014 Да нет.Просто половина не знает про эту функцию, а вторая половина заполнила свои 500-600 товаров и работает с ними.И только 4 человека постоянно работают с каталогом своим Цитата Ссылка на сообщение Поделиться на другие сайты
Mozzie Опубликовано 13 июля, 2014 Жалоба Поделиться Опубликовано 13 июля, 2014 Ну так что есть умельцы которые могут помочь с этой проблемой? и довести его до ума!!! Цитата Ссылка на сообщение Поделиться на другие сайты
pikusov Опубликовано 14 июля, 2014 Жалоба Поделиться Опубликовано 14 июля, 2014 В связи с изменением алгоритма Яндекса и усилением их защиты от парсинга выпущена новая версия Simpla 2.3.6 с новым парсером товаров. Цитата Ссылка на сообщение Поделиться на другие сайты
coolbust Опубликовано 13 сентября, 2014 Жалоба Поделиться Опубликовано 13 сентября, 2014 Запилил новый магазин на 2.3.6 попробовал парсер характеристик - не работаетПопробовал админку демо с этого сайта - аналогично не работает Картинки парсит, но нужны именно характеристики... Друзья, есть рабочее решение этой проблемы? Цитата Ссылка на сообщение Поделиться на другие сайты
kib Опубликовано 25 сентября, 2014 Жалоба Поделиться Опубликовано 25 сентября, 2014 Что с парсером характеристик? Есть решение? Цитата Ссылка на сообщение Поделиться на другие сайты
coolbust Опубликовано 23 декабря, 2014 Жалоба Поделиться Опубликовано 23 декабря, 2014 Вот решение, у меня работает https://yadi.sk/d/C0SgguDKda9AHЗаменить /public_html/simpla/ajax/get_info.php <?php /** * Simpla CMS * * @copyright 2014 Denis Pikusov * @link http://simplacms.ru * @author Denis Pikusov * */ // Немного настроек // Для использования прокси используйте строки: define("USE_PROXY", 0); // 1 = использовать прокси define("PROXY", 'xxx.xxx.xxx.xxx:80'); define("PROXY_USER", 'login:password'); define("REGION", '213'); // 213 - москва, список регионов: http://search.yaca.yandex.ru/geo.c2n define("DOMAIN", 'market.yandex.ru'); // для украины нужно market.yandex.ua session_start(); // Временный файл для хранения cookies // Так как временный файл существует до окончания выполнения скрипта, // сохраняем его содержимое в сессию $cookies_filename = tempnam(sys_get_temp_dir(), 'yandex_market_cookies'); if(!empty($_SESSION['yandex_market_cookies'])) file_put_contents($cookies_filename, $_SESSION['yandex_market_cookies']); // Для изменения региона нужно обратиться сюда $url = 'http://tune.yandex.ru/region/?retpath=http%3A%2F%2Fmarket.yandex.ru'; get_page($url); // Ключевое слово для поиска $keyword = $_GET['keyword']; // Если нам запостили капчу, отправим ее на проверку if(!empty($_GET['captcha'])) { $page = get_page("http://".DOMAIN."/checkcaptcha?key=".urlencode($_SESSION['captcha_key'])."&retpath=".urlencode(html_entity_decode($_SESSION['captcha_retpath']))."&rep=".urlencode($_GET['captcha'])); } // Адрес страницы с результатами поиска $url = "http://".DOMAIN."/search.xml?cvredirect=2&text=".urlencode($keyword); // Выбираем результаты поиска $page = get_page($url); //print($page); if(preg_match("/(http:.*\/captchaimg.*)\"\s/ui", $page, $match)) { $captcha_image = $match[1]; if(preg_match('/<input type="hidden" name="key" value="(.*)">/ui', $page, $match)) { $_SESSION['captcha_key'] = $match[1]; } if(preg_match('/<input type="hidden" name="retpath" value="(.*)">/ui', $page, $match)) { $_SESSION['captcha_retpath'] = $match[1]; } } $result = new stdClass(); if(!empty($captcha_image)) { $result->captcha = base64_encode(get_page($captcha_image)); //print "<form><img src='data:image/jpeg;base64," . base64_encode(get_page($captcha_image)) . "' /><input type=text name=captcha><input type=text name=keyword value='$keyword'><input type=text name=captcha_key value='$captcha_key'><input type=text name=captcha_retpath value='$captcha_retpath'><input type=submit></form>"; } $result->product = parse_product($page); header("Content-type: application/json; charset=UTF-8"); header("Cache-Control: must-revalidate"); header("Pragma: no-cache"); header("Expires: -1"); print(json_encode($result)); // Функция забирает содержимое страницы по указанному URL function get_page($url, $level=0) { // Имя временного файла, в котором хранятся куки для CURL global $cookies_filename; // Максимальный уровень рекурсии $max_level = 20; if($level >= $max_level) return false; // Должен быть установлен curl if(!function_exists('curl_init')) { trigger_error("curl does not exists"); return false; } // Инициализируем curl $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_USERAGENT, "Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.9.168 Version/11.51"); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookies_filename); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookies_filename); curl_setopt($ch,CURLOPT_HTTPHEADER, array( 'Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language:ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3', 'Connection:keep-alive', )); // Нужно установить регион $cookies_content = file_get_contents($cookies_filename); $new_cookies_content = preg_replace('/(yandex_gid).*/', "$1\t".REGION, $cookies_content); if($new_cookies_content == $cookies_content) $new_cookies_content .= "\n.yandex.ua\tTRUE\t/\tFALSE\t1\tyandex_gid\t".REGION."\n.yandex.ru\tTRUE\t/\tFALSE\t0\tyandex_gid\t".REGION; file_put_contents($cookies_filename, $new_cookies_content); // Яндекс любит рефереров и реже банит, если реферер правдоподобный // Указываем реферером адрес, запрошенный в прошлый раз if(!empty($_SESSION['yandex_market_last_visited_url'])); curl_setopt($ch, CURLOPT_REFERER, $_SESSION['yandex_market_last_visited_url']); // Настройки прокси: if(USE_PROXY) { curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1); curl_setopt($ch, CURLOPT_PROXY, PROXY); curl_setopt($ch, CURLOPT_PROXYUSERPWD, PROXY_USER); } // Выполняем запрос по адресу $data = curl_exec($ch); //if(!$data) //{ // trigger_error(curl_error($ch)); // return false; // } // Проверяем код ответа для проверки, нет ли редиректа $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); // Больше нам curl не нужен curl_close($ch); // Записываем в сессию куки, которые отложил curl во временный файл $_SESSION['yandex_market_cookies'] = file_get_contents($cookies_filename); // Отделяем тело страницы от заголовка $dataArray = explode("\r\n\r\n", $data, 2); // Делим ответ на заголовок и тело if(count($dataArray)!=2) return false; list($header, $body) = $dataArray; // В случае редиректа рекурсивно следуем за яндексом if($httpCode == 301 || $httpCode == 302) { $matches = array(); preg_match('/Location:(.*?)[\n$]/', $header, $matches); if(isset($matches[1])) { // Рекурсивно запрашиваем страницу по адресу редиректа $body = get_page(trim($matches[1]), $level+1); } } // В случае 404 пробуем еще несколько раз - яндекс часто глючит и отдает 404 if($httpCode == 404) { $body = get_page($url, $level+1); } // Сохраняем последний посещенный URL для реферера $_SESSION['yandex_market_last_visited_url'] = $url; // Отдаем тело страницы return $body; } // Функция отдает результат парсинга страницы function parse_product($page) { // Если это страница товара, ишем описание if(preg_match_all('/<ul class="b-vlist b-vlist_type_mdash b-vlist_type_friendly">(.*?)/ui', $page, $matches)) { // Описание товара $description = '<ul>'.reset($matches[1]).'</ul>'; $result = new stdClass; $result->description = $description; // Страница характеристик if(preg_match_all('/<p class="b-model-friendly__title"><a href="(.*?)">/ui', $page, $matches)) { $options_url = 'http://'.DOMAIN.reset($matches[1]); $options_page = get_page($options_url); preg_match_all('/<th class="b-properties__label b-properties__label-title"><span>(.*?)<\/span><\/th><td class="b-properties__value">(.*?)<\/td>/ui', $options_page, $matches, PREG_SET_ORDER); $options = array(); foreach($matches as $m) { $option = new stdClass; $option->name = $m[1]; $option->value = $m[2]; $options[] = $option; } $result->options = $options; } else return false; } // Иногда яндекс отдает не страницу конкретного товара, а список товаров // В этом случае переходим на страницу первого товара в списке elseif(preg_match_all('/<h3 class="b\-offers__title"><a .*href="(\/model\.xml.*?)"/ui', $page, $matches)) { $product_url = 'http://'.DOMAIN.reset($matches[1]); $page = get_page($product_url); return parse_product($page); } else return false; return $result; } Цитата Ссылка на сообщение Поделиться на другие сайты
DressCode Опубликовано 24 декабря, 2014 Жалоба Поделиться Опубликовано 24 декабря, 2014 Может стоит так же добавить возможность ротации USERAGENT и возможность работы через прокси? Это всего-то пара дополнительных строчек curl_opt Цитата Ссылка на сообщение Поделиться на другие сайты
coolbust Опубликовано 24 декабря, 2014 Жалоба Поделиться Опубликовано 24 декабря, 2014 Идея хорошая, тогда для маркета мы будем постоянно с разного браузера тем самымон менее будет понимать что это бот, ну а прокси дает возможность менять ip скрипта, фича это присутствует, но она почему то не хочет работать, я пробовал рабочие прокси - не грузит Может найдется добрый человек кто допишет? Цитата Ссылка на сообщение Поделиться на другие сайты
Homa Опубликовано 28 декабря, 2014 Жалоба Поделиться Опубликовано 28 декабря, 2014 Файл залить рядом с /public_html/simpla/ajax/get_info.phphttps://drive.google.com/file/d/0B11nBtii5IVvRXhySHhxTFJndUE/view?usp=sharing Подключить в любом мете до инициализации cURL, у меня в самом верху include_once("random_user_agent.php"); Заменить настройки браузера в cURL c: curl_setopt($ch, CURLOPT_USERAGENT, "Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.9.168 Version/11.51"); на: curl_setopt($ch, CURLOPT_USERAGENT,random_user_agent()); помогло на 1 раз Цитата Ссылка на сообщение Поделиться на другие сайты
yaskin Опубликовано 9 августа, 2015 Жалоба Поделиться Опубликовано 9 августа, 2015 Файл залить рядом с /public_html/simpla/ajax/get_info.phphttps://drive.google.com/file/d/0B11nBtii5IVvRXhySHhxTFJndUE/view?usp=sharing Подключить в любом мете до инициализации cURL, у меня в самом верху include_once("random_user_agent.php"); Заменить настройки браузера в cURL c: curl_setopt($ch, CURLOPT_USERAGENT, "Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.9.168 Version/11.51"); на: curl_setopt($ch, CURLOPT_USERAGENT,random_user_agent()); помогло на 1 разперезалей, файл не найден Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.