YaXML — какой-то не такой, там 1000 запросов мона с определенного АйПи в сутки… Да и слухи ходили и рядах seo-спецов, что выдача YaXML отличается бывает от выдачи, что обычным пользователям показывается.
ИМХО намного лучше юзать обычную пользовательскую выдачу, как я делаю, ничего сложного нету:
— запрос GET, юзабельные параметры: text — текст запроса, p — номер страницы выдачи (0, 1, ...) да и numdoc — число рез-тов на страницу (10, 20, 50 вроде помню допустимы, ессессно, для уменьшения нагрузки используйте максимум)))
— полученную страницу прогоняете через регулярное выражение, вот мой вариант, кстати, исправленный сегодня в учетом вчерашнего апа: #.*]*tabindex[^>]*href=«([^»]+)«[^>]*>(.+).*#Ui
На выходе получаете массив (numdoc элементов в нем) массивов (3 эл-та в подмассиве: html с одним результатом выдачи, url найденной страницы выдачи, ее заголовок)
ну и опять же, с учетом вчерашнего апа, теперь кликнув на результат выдачи, вы пойдете на что-то вроде clck.yandex.ru/redir/dtype=iweb/path=80.22.82/vars=84=86… reqid=1219118886-18378/*http://www.vinzavod.ru/
Поэтому теперь еще надо дополнительно, чтобы извлечь url найденной страницы, нужно прогнать написанное выше через выражение: /[\*](http:.*)$/Ui, и получите на выходе: www.vinzavod.ru/
Я класс на PHP написал, пользуюсь, не жалуюсь))
Единственное что надо соблюдать, так это паузы между запросами, секунды 3 и более бывает вроде как достаточно, чтобы яндекс нас за робота не посчитал…
P.S: Мог бы в блоги писать, оформил бы по этому статью
Да нет, если соблюдать временной промежуток, я ставлю рандомно — от 2 до 4 секунд, но опыт мне говорит, что надо поболее, все равно, каюсь, капча вываливается иногда…
Вообще это часть небольшого внутреннего проекта моей компании. Проект небольшой и функция его — анализировать позиции по ключевикам определенного сайта в поисковиках, поскольку все эти семониторы платные + демо версия семонитора отказалась работать после вчерашнего апа яндекса)) а я просто поправил регулярки)).
Как правило, анализируют сразу в нескольких поисковиках, потому можно все сделать таким образом, что не добить сначала яндекс, потом гугл и пр., а поочередно)) Тогда многократно падает вероятность показа капчи (что со стороны яндекса, что со стороны гугла), да и промежуток временный в 2-4 секунды уже будет не актуален вообще, либо для порядку, чтобы нагрузки не было, сократится максимум до 1 с… и не будет бесполезной утечкой времени))
Подход, состоящий в парсинге пользовательской выдачи, конечно, посложнее, чем YaXML, но зато я точно знаю, что результаты аналогичны тому, что видят пользователи, и я не ограничен в количестве запросов))
пробовал и 3 секунды и больше, придумывал самые красивые заголовки, все равно банит как робота. Ну и 3 секунды тоже проблема, когда надо обработать сотни запросов.
А xml да, отличается от обычной выдачи, что делает его бесполезным
Вы уверенны, что такая лесница на букве «Я» вместе с не реальным вензелем снизу добавит солидности?
Для солидности думаю будет достаточно написать
«PHP класс для работы с Яндекс.XML»
Зато фирменно :) По мне так этот голубой тоже ярковат, лучше взять цвет эмблемы Хабра:
или сделать комбинированный вариант:
:) Вы не против такого обращения с вашим рисунком?
Жаль, что для виртуального хостинга Яндекс.XML не подходит ввиду ограничений по числу запросов с IP и физической невозможности получить код доступа, если конкретный IP для этой же цели уже использован кем-то другим. Сделали бы в Яндексе JavaScript API, подобный гугловскому.
ммм… много работаю с я.иксмл, и думаю что для тех кто не пробывал ранее, лучше обратится к примерам на самом Я., без задней мысли, там просто реализованно по четче, примеров куча… ну и стиль кода мне там больше навицца)
Зачем нужен поиск с ограничениями и чужой рекламой — если есть Sphinx?
Мне лично не нравится — если 1001 человек ничего не получит в результатах поиска,
как-то это не солидно.
Всегда приятнее часть ответственности переложить на другого :)
К тому же, sphinx — это уже тяжёлая артиллерия, для простеньких сайтов его использовать просто нерационально. (оффтопик: а sphinx умеет добавлять элементы в индекс без полной его перестройки?)
смотрел доки на xml.yandex.ru и исходники, но так и не получилось запустить поиск с вашим классом по определённому сайту (куда только не пихал «<< host=mysite.ru»)
PHP класс для работы с Яндекс.XML