Итак, здесь будет только безвредная теория. (Да-да, парсеры — это не только программы для кражи контента. Если их использовать с умом и в полезных целях — можно осуществить кое-какие красивые идеи (главное, чтобы эти идеи были)).
Шаг 1 — Постановка задачи и разработка интерфейса
Начнем, как всегда, с общего описания задачи. Нам необходима форма, на которой расположено поле для ввода ключевика, кое-какие настройки, грид для отображения результатов и кнопка "Старт". Этого будет достаточно.
Не мудрствуя лукаво, садимся и делаем:
Я привыкла к компонентам DevExpress, поэтому грид у меня — cxGrid. Но вы можете использовать компоненты на свой выбор.
Шаг 2 — Исследование сайта, предназначенного для парсинга. Область поиска. Составление регулярного выражения
Перейдем к следующему шагу. Заходим на сайт, вводим слово, нажимаем кнопку, смотрим, что передается в адресной строке. Потом просматриваем html-код полученной страницы. Видим, что для того, чтобы получить выдачу, достаточно написать в адресной строке
http://direct.yandex.ru/stat/wordsstat.pl?text=СЛОВОЗапоминаем это, идем дальше. Следующая задача — составить регулярное выражение.
Открываем редактор-тестер регулярных выражений. В верхнее поле загружаем исходный код страницы и пробуем составить регулярку. Я не поленилась и составила. При составлении вы обнаружите небольшую особенность кода. Левый столбик "Что искали со словом" выдается с форматированием, отличным от форматирования правого столбика (в первом есть переводы строк после закрытия td, а во втором всё лезет в одну строку). Тем не менее, мы это предусмотрим. (Опыт показал, что регулярные выражения, использующиеся в проектах, лучше хранить в ini-файлах, чтобы при изменении каких-то параметров их можно было легко поменять без перекомпиляции проекта).
Любуемся получившимися результатами. В регулярке в первом сабматче — слово, во втором — количество запросов.
Теперь мы готовы к началу разработки программы. (Продолжение следует.)
Знакомый написал на перле за пару дней...
ОтветитьУдалитьРада за вашего знакомого, очень хорошо, что он написал :) Их можно писать на чем угодно... знающий человек за час спокойно напишет. Этот блог для того, чтобы любой мог написать.
ОтветитьУдалитьА где продолжение следует? С удовольствием почитал бы:)
ОтветитьУдалитьАнонимный, указала :) Но там сыровато тоже, давно писалось)
ОтветитьУдалитьАндрей.
ОтветитьУдалитьМария, хотелось бы увидеть подробное разъяснение составленного Вами регулярного выражения. Пошагово и человеческим языком. Я их только начинаю изучать и мне не совсем понятен Ваш "pattern" (то, что Яндекс сменил верстку и шаблон не актуален, я понимаю). Заранее спасибо за ответ.