уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Сегодня решил немного по программировать всё-таки для Web. А то блог «Delphi в Internet», а основная масса статей для работы с Excel в Delphi. Непорядок.

Первое, что пришло на ум — это написать свой компонент для определения тематического индекса цитирования Яндекса (тИЦ). Все-таки тема достаточно близка к Internet, да и лишним такой компонент никогда не будет.  Ну, а чтобы не писать отдельный компонент ради вывода единственного числа, решил дополнительно получать всю возможную информацию от Яндекс.Бара. И вот, что у меня получилось.Основная часть работы компонента в Интернет заключается в получении ХML-документа от Яндекс.Бара. Далее, уже по имеющемся данным можно смело вычитывать всю информацию о домене, определять тИЦ и т.д. Я не стал усложнять себе жизнь и писать собственный XML-парсер, а воспользовался уже готовым с вкладки Internet палитры компонентов (TXMLDocument). Если учесть, что в ответ на запрос приходит XML-документ размером максимум в 10 строк и 3 узла, то стандартного компонента хватит «по самое нихачу».

Далее, необходимо сформировать правильный запрос, дабы не получить исключение. В идеале URL запроса выглядит так:

http://bar-navig.yandex.ru/u?ver=2&url=ВАШ_ДОМЕН&show=0

Причем, ВАШ_ДОМЕН должен быть с http:// иначе запрос не проходит. Казалось бы нет ничего проще — записал запрос в строку, передал компоненту XMLDocument и парси себе сколько угодно. Но есть одно «но», которое следует учитывать — амперсанды (&) в строке.

Дело в том, что мудрый Windows при встрече амперсанда справедливо полагает, что следующий за ним символ надобно подчеркнуть, а сам амперсанд убрать.  Попробуйте выполнить такую простую опрерацию:

ShowMessage('http://bar-navig.yandex.ru/u?ver=2&url=ВАШ_ДОМЕН&show=0')

и увидите, что оба амперсанда волшебным образом испарились из строки. Чтобы такого не случалось, следует строку запроса изменить вот так:

http://bar-navig.yandex.ru/u?ver=2&&url=ВАШ_ДОМЕН&&show=0

после этого запрос отправится без проблем. Останется только разобрать ответ. И вот, что мы можем получить от компонента:

  1. тИЦ домена
  2. Ранг по Яндексу (вроде бы это количество звездочек в баре)
  3. Информацию о домене: зарегистрирован или нет сайт в Яндекс.Каталог
  4. Если сайт находится в Каталоге, то дополнительно формируется запись, содержащая: имя раздела каталога в котором расположен сайт, URL этого раздела, регион сайта (если указан), и источник информации (Частное лицо или Организация).

То есть по сути всё, что есть в ответе на запрос к Яндекс.Бару. Может информация и излишняя, но лучше пусть её будет много, чем не будет вообще. Кстати, если Вас интересует продвижение сайтов, то можете воспользоваться услугами 10-top.ru.

Ну, а теперь непосредственно по работе с компонентом.

1. Установка компонента YaTic

Я не стал жадничать и прятать исходники, тем более, что информации по этому вопросу море, и поэтому по логике вещей компонент должен без проблем устанавливаться на любые версии Delphi.  Но основная — Delphi 2010.

Установка компонента из bpl-файла.

YaTicСамый простой вариант. Делается это так:

  1. Запускаете Delphi 2010
  2. Выбираете в меню Component —> Install Packages
  3. В открывшемся окне нажимаете кнопку Add и указываете файл WDYandex.bpl

После этого в списке должен появиться наш файлик. А на палитре компонентов появится новая вкладка под названием «WebDelphi.ru» в которой будет содержаться Ваш компонент.

Установка компонента из pas-файла

YaTic_installЕсли по каким-то причинам Вам не удалось воспользоваться первым вариантом установки, или вы используете другую версию Delphi, то установка из pas-файла должна вам помочь. Делается это следующим образом:

  1. Выбираете в меню File — New — Package
  2. Переходите в Project Manager,  выделяете папку Contains, жмете правую кнопку мыши и в меню выбираете Add…
  3. Указываете файл Yandex_TIC.pas
  4. Потом собираете пакет (Ctrl+F9)
  5. Delphi попросит Вас добавить в пакет ещё пару модулей. Соглашайтесь.
  6. Ну и наконец, выделяете в менеджере пакет, жмете правую кнопку мыши и в меню выбираете Install. Пакет будет успешно установлен и на палитре компонентов покажется новый компонент YaTic.

2. Свойства компонента

Свойств у компонента минимум, а отображаемых в Object Inspector ещё меньше — всего два. Поэтому проблем с настройкой возникнуть ни у кого не должно. Единственное, что хочется сразу сказать — не трогайте без надобности свойство Template.

Свойство Template — предназначено для хранения шаблона URL запроса к Яндекс.Бар. Видимым оно сделано исключительно для того, чтобы в случае каких-либо изменения у Яндекса не пришлось переписывать компонент. Если же Вы все-таки решили его изменить, что следует помнить два простых правила работы с этим свойством:

  1. В шаблоне обязательно должна быть подстрока %s, т.к. вместо неё будет подставляться домен.
  2. Все символы & должны быть двойными, т.е. &&. Иначе запрос не выполнится.

На всякий случай в модуле компонента есть константа Defoult, содержащая шаблон URL запроса. Так что, если его-нибудь не так измените, то не расстраивайтесь — рабочий шаблон всегда под рукой.

Свойство URL — говорит само за себя. Здесь храниться адрес домена тИЦ которого надо определить. Для облегчения работы с компонентом я предусмотрел ситуацию, когда адрес вписывается без http:// — компонент сам все подставит. Также при записи URL из строки вырезается всё, что стоит за именем домена, т.к. тИЦ определяется не для отдельных страниц, а для домена в целом. Поэтому пишите в URL какие угодно строки — компонент сам все обработает и всё что нужно подставит.

Это что касается видимых в Object Inspectore свойствах. Так же имеется ряд доступных свойств таких как:

Свойство TIC : integer — тИЦ домена

Свойство Rang : integer — ранг по Яндексу. Будет удобно использовать, если вдруг решите обозначать популярность домена звездочками или ещё какими-нибудь фигурками.

Свойство InYaCa : boolean — True если домен зарегистрирован в Яндекс.Каталоге.

Свойство: YacaInfo : TYaCaInfo — запись, содержащая текстовую информацию о домене.

В свою очередь тип TYaCaInfo выглядит следующим образом:

type
TYaCaInfo = record
  Topic:  string; // раздел каталога
  CatURL: string; // урл раздела каталога
  Source: string; // источник
  Region: string; //регион
end;

Вот и все свойства компонента. Работать с компонентом тоже довольно просто.

3. Пример работы с компонентом

YaTic_TestProjectРассмотрим простой пример работы с YaTic. Создаем новый проект и располагаем на форме компоненты, как показано на рисунке.

В Edit1 будем вписывать адрес сайта и в label‘ы выводить всё, что нам предоставит компонент. Обработчик события onClick у единственной на форме кнопки выглядит вот так:

procedure TForm2.Button1Click(Sender: TObject);
var CatInfo: TYaCaInfo;
begin
  YaTic1.URL := Edit1.Text;
  Label1.Caption := IntToStr(YaTic1.TIC);
  if YaTic1.inyaca then
    Label2.Caption := 'в каталоге'
  else
    Label2.Caption := 'Не в каталоге';
  Label7.Caption := IntToStr(YaTic1.Rang);
  CatInfo := YaTic1.YacaInfo;
  Label9.Caption := CatInfo.Topic;
  Label11.Caption := CatInfo.CatURL;
  Label13.Caption := CatInfo.Source;
  Label15.Caption := CatInfo.Region
end;

Как видите, чтобы не обращаться лишний раз к свойству YacaInfo я ввел всего одну переменную типа TYaCaInfo. В дальнейшем, изменяя только URL — получаем всю информацию. Если какая-то информация по домену отсутствует, например не указан регион сайта, то в соответствующее поле записи TYaCaInfo будет пустым.

0 0 голоса
Рейтинг статьи
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Подписаться
Уведомить о
11 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
propet
propet
27/10/2009 01:23

У меня делфи 2005, bpl пакет не ставится т.к. нет одной из библиотек дельфи 2010, а установка из pas файла недоступна т.к. его нет в архиве с bpl, засада

SeoGhost
16/08/2010 23:29

Добрый день, хороший комнонент, а не могли бы вы написать компонент для определения Google PR? У меня считать контрольную сумму не выходит. Может у вас выйдет? Наше два компонента для PR, но один с parsers.info уже не рабочий, другой мне не выдает в числовом виде, только в виде картинки…

Seo Ghost
17/08/2010 14:54

Странно. Да и работающих, нормальных PHP скриптов, которые нормально считают сумму мало. Если сделаете буду очень благодарен

Александр
10/12/2010 20:27

что не выходит поставить не тем не другим способом

Александр
10/12/2010 20:28

ругается что неможет найти .dcu

Александр
14/12/2010 00:03

разобрался теперь ,задача как в поток все это завернуть или в несколько

trackback

[…] и при разработке предыдущего компонента для Delphi 2010, я не стал ограничивать установку компонента только […]

Tropic.name
27/06/2015 14:54

Скажите пожалуйста существует ли ограничение на количество запросов к ресурсу bar-navig.yandex.ru