Пишем на Delphi SEO-мониторинг: Урок 8. Определяем позицию сайта в Яндексе (TWebBrowser, HTML) |
Автор megabax | |||||||
10.08.2010 г. | |||||||
Пишем на Delphi SEO-мониторинг: Урок 8. Определяем позицию сайта в Яндексе (TWebBrowser, HTML,getElementsByTagName)Исходники у уроку можно скачать здесь. На прошлом уроке мы научились листать страницу поиска. Сегодня напишем простенькую программа, которая по URL сайта определит его позицию в Яндексе по заданному запросу. Вам понадобятся исходники прошло урока, ссылки на скачивание в нем есть. Для начала мы напишем функцию:
Работает эта функция следующим образом: перебирает все тэги <LI> в странице поиска, ищет в них URL заданного сайта. Если находит, то определяет его позицию, которая содержится в первом тэге <B> первого тэга <H2>: Если функция ничего не нашла, она возвращает -1, иначе номер позиции. Затем переделаем немножко форму, удалим лишние компоненты и добавим новые. вот так она должна выглядеть*: И так, мы edRef переименовали в edURL, убрали кнопочку "Показать", она нам больше не понадобиться, поле edPage - туда же в урну, кнопочка "Пуст" пусть так и называется btnExec, только заголовок у нее будет другой "Найти". Еще мы добавили прогресс бар TGauge, его так и назовем Gauge. Для отображения результатов проверки кинем на форму две метки (TLabel): lbPosition и lbPage. Для поясняющих надписей тоже применим метки, но их название нам не важно. Ах да, еще таймер (TTimer), имя Timer, интервал 5000. Он нужен для пятисекундной задержки, пока не загрузилась очередная страница поиска. Функцию URLSearch объявим в секции private класса формы, там же объявим и другие вспомогательные поля:
При создании формы сбрасываем флаг isExec, он у нас показывает, идет ли в данный момент процесс поиска:
При нажатии на кнопочку "Поиск" запускается процесс поиска:
В этом обработчике нажатия на кнопочку мы устанавливаем флаг isExec в значение "истина", что означает процесс запущен, а так же инициируем начальное значение текущей страницы. После этого открываем страницу поиска, начиная с нулевой страницы (она является первой, счет идет с нуля). После загрузки струнцы компонент TWebBrawser у нас генерит событие OnDownloadComplete. Правда, генериться оно после загрузки несколько раз, потому пришлось прибегнуть к задержке времени по таймеру. И так, вот обработчик этого события:
Как видим, он просто устанавливает флаг, по которому будет ориентироваться процедура поиска. А вот и сама процедура, она вызывается по таймеру, поэтому размещена в обработчике события OnTimer:
Если процесс поиска не запущен или страница еще не загружена, ничего не делаем. Иначе сбрасываем флаг isComplete, так как возможно, мы будет открывать новую страницу. Если на текущей странице нашли заданный сайт, останавливаем поиск и выводим на экран его результат. В противном случае переходим к следующей странице. Если мы уже просмотрели сто страниц, дальше не ищем, и так искать слишком долго. Говорим "Не найдено". В принципе все, программу можно запускать на тестирование.
Исходники у уроку можно скачать здесь. Скриншоты, помеченные знаком *, являются цитатами и иллюстрациями в соответствии со ст. 1274 ГК РФ программного продукта "Delphi", авторское право на который принадлежит Borland Delphi.. |
|||||||
Последнее обновление ( 07.11.2011 г. ) |
« След. | Пред. » |
---|