Pull to refresh

Comments 33

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: Мог бы в блоги писать, оформил бы по этому статью
Блин, хабр похерил символы из регулярок, если что — пишите в личку, скину…
Код надо брать под тег:
<code>твой код</code>
Перепишите, пожалуйста, регулярные выражения или дайте ссылку для скачивания. Хочется попробовать.
Я сейчас как раз готовлю пост про то, что писал в коментах))
На скольких сайтах параллельно вы готовы гарантированно поддерживать этот код в боеспособном состоянии?

Это к слову о преимуществах YaXML в случае, когда поиск нужен не на одном сайте и не на десяти…
Ээээм… Я писал с точки зрения решения задачи определения позиций определенного сайта в поисковиках по определенным словам и фразам ))
Согласен, в случае если YaML расходится с основной выдачей — ваше решение не только лучшее из двух, но и единственно верное.
За это вроде бы капчу показывают?
Да нет, если соблюдать временной промежуток, я ставлю рандомно — от 2 до 4 секунд, но опыт мне говорит, что надо поболее, все равно, каюсь, капча вываливается иногда…

Вообще это часть небольшого внутреннего проекта моей компании. Проект небольшой и функция его — анализировать позиции по ключевикам определенного сайта в поисковиках, поскольку все эти семониторы платные + демо версия семонитора отказалась работать после вчерашнего апа яндекса)) а я просто поправил регулярки)).

Как правило, анализируют сразу в нескольких поисковиках, потому можно все сделать таким образом, что не добить сначала яндекс, потом гугл и пр., а поочередно)) Тогда многократно падает вероятность показа капчи (что со стороны яндекса, что со стороны гугла), да и промежуток временный в 2-4 секунды уже будет не актуален вообще, либо для порядку, чтобы нагрузки не было, сократится максимум до 1 с… и не будет бесполезной утечкой времени))

Подход, состоящий в парсинге пользовательской выдачи, конечно, посложнее, чем YaXML, но зато я точно знаю, что результаты аналогичны тому, что видят пользователи, и я не ограничен в количестве запросов))
пробовал и 3 секунды и больше, придумывал самые красивые заголовки, все равно банит как робота. Ну и 3 секунды тоже проблема, когда надо обработать сотни запросов.
А xml да, отличается от обычной выдачи, что делает его бесполезным
Большое спасибо за статью!
Буду пытаться подключить скрипт к своему сайту.
Если будет что-то не получаться, можно будет задать вопрос?
Спасибо.
svn checkout yandex.googlecode.com/svn/trunk/

Хорошее имя у репозитория :)
яндекс как всегда…

мало того, что все прёт у гугла… :)
Боже, а что ж картинка — то в статье такого ужасного качества?!?!
не портьте первую страницу хабра!
на XSLT как-то это все приятнее выглядит
Предлагаю автору взять мой вариант картинки, для солидности статьи.

Автор не будет против если я использую данную картинку и в своём блоге?
Конечно не будет, автор специально рисовал для автора статьи ))
Вы уверенны, что такая лесница на букве «Я» вместе с не реальным вензелем снизу добавит солидности?
Для солидности думаю будет достаточно написать
«PHP класс для работы с Яндекс.XML»
Мы тут не дизайн обсуждаем…
А моя картинка визуально показывает, о чем речь в статье.

От Вас же вижу второй критикующий комментарий в сторону картинки…
может вы блогом ошиблись?
Имхо букву «Я» лучше оставить оригинального цвета :)
Я хотел сделать под цветовую гамму хабра
да и красный цвет, очень агрессивно смотриться :)
Зато фирменно :) По мне так этот голубой тоже ярковат, лучше взять цвет эмблемы Хабра:
yandex_xml_habr.gif - Picamatic - upload your images
или сделать комбинированный вариант:
yandex_xml_combi.gif - Picamatic - upload your images
:) Вы не против такого обращения с вашим рисунком?
Да нет, получилось очень даже ничего ))
Хотя первый ваш вариант, мне больше по душе
Жаль, что для виртуального хостинга Яндекс.XML не подходит ввиду ограничений по числу запросов с IP и физической невозможности получить код доступа, если конкретный IP для этой же цели уже использован кем-то другим. Сделали бы в Яндексе JavaScript API, подобный гугловскому.
ммм… много работаю с я.иксмл, и думаю что для тех кто не пробывал ранее, лучше обратится к примерам на самом Я., без задней мысли, там просто реализованно по четче, примеров куча… ну и стиль кода мне там больше навицца)
Зачем нужен поиск с ограничениями и чужой рекламой — если есть Sphinx?
Мне лично не нравится — если 1001 человек ничего не получит в результатах поиска,
как-то это не солидно.
Всегда приятнее часть ответственности переложить на другого :)
К тому же, sphinx — это уже тяжёлая артиллерия, для простеньких сайтов его использовать просто нерационально. (оффтопик: а sphinx умеет добавлять элементы в индекс без полной его перестройки?)
смотрел доки на xml.yandex.ru и исходники, но так и не получилось запустить поиск с вашим классом по определённому сайту (куда только не пихал «<< host=mysite.ru»)

подскажите?
Sign up to leave a comment.

Articles