Подписка

добавить на Яндекс

Наши проекты

Delphi+Google

Google API

Google API в Delphi - проект с открытым исходным кодом.

Chrono

Chrono

Хронометр - программа для ведения списка задач.

ODFProc

ODFProc

ODFProc - работа с документами OpenOffice в Lazarus и FreePascal.

Поддержка блога

А тут я коплю на лицензию Delphi XE на iPad =).
Сумма пожертвования не фиксирована.

Публикации

Год назад

Случайный пост

Последние

Сообщения форума

Комментарии

Социальные сети

Google

Facebook

Twitter

Опрос

Вы сейчас или в ближайшем обозримом будущем планируете разрабатывать кроссплатформенное приложение с использованием Firemonkey?



Loading ... Loading ...

Блоги и сообщества

Статьи по Delphi DelphiFeeds.ru - Все Delphi-блоги Рунета Сообщество умных людей VR-Online.RU Бесплатный журнал для программистов и всех, кто интересуется IT Статьи и уроки по Delphi Новостной блог о высоких технологиях
Система Orphus
Опубликовал Vlad 21 сентября 2009 в 20:10.
Категории: Delphi в Web, Компоненты Delphi.


тИЦ ЯндексСегодня решил немного по программировать всё-таки для 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 будет пустым.

Ну и, наконец, сам архив компонента вместе с собранным примером его использования :

Компонент определения тИЦ Яндекс

Качайте, устанавливайте, определяйте тИЦ для сайтов и, в случае возникновения вопросов, не забывайте обращаться ;)

З.Ы. Может стоит написать компонент для PR Google? Там работа будет по-интереснее.

Мой блог находят по следующим фразам

Мой блог находят по следующим фразам

Понравилась статья? Тогда:
Делись! Загружай! Плюсуй!
   Отправить PDF на   
Читай ещё статьи на WebDelphi.ru

Комментарии (9)

WP_Cloudy
  • propet пишет:

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

  • Vlad пишет:

    Упс, прошу прощения, видимо забыл в архив положить файлик. Архив компонента перезалил — теперь там есть и pas-файл

  • SeoGhost пишет:

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

  • Vlad пишет:

    Пробовал PR читать с помощью того, что предоставляет панель Google (аналогично как и тИЦ), но компонент получился довольно странный — до PR=3 все работает нормально, а для всех остальных выдает PR=10. Надо исходники поискать, может и смогу доработать компонент

  • Seo Ghost пишет:

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

  • Александр пишет:

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

  • Александр пишет:

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

  • Vlad пишет:

    Путь к файлам компонена в настройках IDE надо показать

  • Александр пишет:

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

Ваш ответ

Внимание: Все комментарии модерируются, и это может вызвать задержку их публикации. Отправлять комментарий заново не требуется.

Пожалуйста, заключайте исходный код в тэги [code][/code].
Если код большой, то воспользуйтесь Вставкой кода на отдельной странице и оставьте в комментарии ссылку на исходник