суббота, 7 января 2012 г.

    Парсинг результатов выдачи с Yandex.XML на Java

    Часть 1. Лирическое отступление.

    Если вы не хотите читать "многабукв", а хотите сразу увидеть пример кода - переходите ко второй части этой статьи.

    Года 4 назад я впервые окунулся в мир SEO. Это было для меня ново и интересно, а уж как завораживали финансовые "стриптизы" популярных сеошников - голова кругом шла :)
    С тех пор много воды утекло. Честно говоря, каких-то особых высот в этом деле я не достиг, но полезные знания сохранились. Помимо знаний сохранилось и несколько сайтов, которые я время от времени то забрасываю, то всячески стараюсь оживить.

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

    Плох тот сеошник, который не знает позиции своего сайта по основному набору ключевых слов. С одной стороны это легко решается приобретением какого-нибудь специализированного софта, а-ля Yazzle или ему подобных. С другой стороны регулярный контроль позиций можно осуществлять с помощью сервиса SeoBudget за сущие копейки (рефссылка), что я и делал до поры до времени. Есть и третий вариант - на просторах интернета можно найти бесплатные поделки, которые может быть выглядят похуже, умеют поменьше и рекламируются поскромнее, но при этом ничуть не хуже старших собратьев умеют проверять позиции сайта в выдаче по ключевым словам.
    Но нормальные герои всегда идут в обход, вот и я по исконно русской программерской традиции решил написать свой софт для снятия позиций.

    Начать решил с Яндекса, ибо с ним у меня всегда отношения складываются очень напряженно. За полчасика накидал парсер поисковой выдачи, запустил всю эту красоту и... словил бан от Яши - мои запросы справедливо были расценены, как роботские. Я посмеялся над своей наивностью, пригрозил Яндексу вторым раундом сражения, когда я напишу парсер с человекоподобным поведением, антикапчей, блэк джеком и балеринами и пошел писать парсер выдачи через сервис Яндекс.XML.

    Прежде чем перейти непосредственно к примеру взаимодействия с этим сервисом, хочу сказать пару слов об этом самом сервисе. Итак, Яндекс.XML - это по сути интерфейс взаимодействия программ/сервисов/сайтов пользователя с поисковой базой Яндекса. Сам Яша делает акцент на том, что лучше этот сервис использовать для прикручивания удобной формочки поиска на вашем сайте. При этом он не даёт расслабляться наглым халявщикам вроде меня и ограничивает использование сервиса 1000-ю запросами в день с заранее зарегистрированного IP-адреса. Более того, чтобы получить разрешение на эти 1000 запросов в день, нужно вбить какой-нибудь номер сотового телефона, отличный от того, к которому привязан ваш почтовый ящик, на него придет СМСка с кодом подтверждения и только тогда наступит счастье.

    В общем мороки много, выгода сомнительна - с тысячью запросами в день особо не разгуляешься, но халява есть халява, к тому же для простой проверки своих позиций в топе этого будет достаточно.
    Забегая далеко вперёд, я скажу, что всё-таки нашел не бесплатный, но довольно дешёвый способ анализировать выдачу Яндекса (примерно 1 копейка за запрос против 3 копеек у SeoBudget), и буду двигаться в этом направлении, но это уже тема для совсем другой статьи.

    Часть 2. Переходим к конкретике.

    Пора перейти к коду.
    Волка ноги кормят, а меня - язык Java, поэтому и пример будет на Java. К тому же беглый поиск примеров взаимодействия с Yandex.XML на java результатов не дал: кругом один php, и чуть-чуть perl-а.