Поиск по блогу

четверг, 4 сентября 2008 г.

Написание примитивного парсера ключевых слов. Часть I. Постановка задачи и анализ кода страницы

Итак, первое задание. Написать парсер ключевых слов со старницы http://direct.yandex.ru/stat/. Я не призываю парсить яндекс в промышленных масштабах, поэтому пока не буду говорить ни о многопоточности, ни об использовании прокси-серверов в обход признания роботом любого, кто делает запросы с нечеловеческой скоростью. Вообще, не очень нравятся люди, которые пытаются навариться на продаже того, чего они напарсили. Причем некоторые заламывают вообще какие-то бешеные цены.

Итак, здесь будет только безвредная теория. (Да-да, парсеры — это не только программы для кражи контента. Если их использовать с умом и в полезных целях — можно осуществить кое-какие красивые идеи (главное, чтобы эти идеи были)).

Шаг 1 — Постановка задачи и разработка интерфейса
Начнем, как всегда, с общего описания задачи. Нам необходима форма, на которой расположено поле для ввода ключевика, кое-какие настройки, грид для отображения результатов и кнопка "Старт". Этого будет достаточно.

Не мудрствуя лукаво, садимся и делаем:
parser ключевых слов
Я привыкла к компонентам DevExpress, поэтому грид у меня — cxGrid. Но вы можете использовать компоненты на свой выбор.

Шаг 2 — Исследование сайта, предназначенного для парсинга. Область поиска. Составление регулярного выражения
Перейдем к следующему шагу. Заходим на сайт, вводим слово, нажимаем кнопку, смотрим, что передается в адресной строке. Потом просматриваем html-код полученной страницы. Видим, что для того, чтобы получить выдачу, достаточно написать в адресной строке
http://direct.yandex.ru/stat/wordsstat.pl?text=СЛОВО
Запоминаем это, идем дальше. Следующая задача — составить регулярное выражение.

Открываем редактор-тестер регулярных выражений. В верхнее поле загружаем исходный код страницы и пробуем составить регулярку. Я не поленилась и составила. При составлении вы обнаружите небольшую особенность кода. Левый столбик "Что искали со словом" выдается с форматированием, отличным от форматирования правого столбика (в первом есть переводы строк после закрытия td, а во втором всё лезет в одну строку). Тем не менее, мы это предусмотрим. (Опыт показал, что регулярные выражения, использующиеся в проектах, лучше хранить в ini-файлах, чтобы при изменении каких-то параметров их можно было легко поменять без перекомпиляции проекта).

Любуемся получившимися результатами. В регулярке в первом сабматче — слово, во втором — количество запросов.

Теперь мы готовы к началу разработки программы. (Продолжение следует.)

Статьи схожей тематики:



5 комментариев:

  1. Знакомый написал на перле за пару дней...

    ОтветитьУдалить
  2. Рада за вашего знакомого, очень хорошо, что он написал :) Их можно писать на чем угодно... знающий человек за час спокойно напишет. Этот блог для того, чтобы любой мог написать.

    ОтветитьУдалить
  3. А где продолжение следует? С удовольствием почитал бы:)

    ОтветитьУдалить
  4. Анонимный, указала :) Но там сыровато тоже, давно писалось)

    ОтветитьУдалить
  5. Андрей.
    Мария, хотелось бы увидеть подробное разъяснение составленного Вами регулярного выражения. Пошагово и человеческим языком. Я их только начинаю изучать и мне не совсем понятен Ваш "pattern" (то, что Яндекс сменил верстку и шаблон не актуален, я понимаю). Заранее спасибо за ответ.

    ОтветитьУдалить

Комментарии модерируются, вопросы не по теме удаляются, троллинг тоже.

К сожалению, у меня нет столько свободного времени, чтобы отвечать на все частные вопросы, так что, может, свой вопрос лучше задать на каком-нибудь форуме?

Поделиться