Отправляет email-рассылки с помощью сервиса Sendsay

Relib.Com - руководство

  Все выпуски  

Служба Рассылок Городского Кота


Служба Рассылок Городского Кота
--------------------------------------------------------------------------------
ОБЗОР НОВОСТЕЙ

http://vbcity.com/vbcode/ru/home.asp

СТИНГ ПРОИГРАЛ КИБЕРСКВОТТЕРУ

Похоже, что с модой на захват доменных имен (киберсквоттерство) приходит мода на
судебные разборки претендентов на эти имена с "киберзахватчиками". На днях
суд отказал британскому рок-исполнителю Стингу в праве на доменное имя Sting.Com.
Суд решил дело в пользу одного любителя компьютерных игр, который пользуется этим
доменом уже восемь лет. Это один из тех редких случаев, когда Всемирная Организация
Интеллектуальной Собственности решила дело не в пользу знаменитости, как это, например,
было совсем недавно с Джулией Робертс. Судья мотивировал свое решение тем, что у
Стинга, хоть он и известен в мировой развлекательной индустрии под своим псевдонимом,
есть реальное имя Гордон Самнер, на которое и можно зарегистрировать уникальный домен.
Житель штата Джорджия Майкл Урван доказал, что обладает правом на домен Sting.Com,
так как в адресе его электронной почты давно уже используется логин "sting",
кроме того, он зарегистрирован под этим псевдонимом в Лиге Чемпионов Quake. Так что
играйте в Quake и выигрывайте!

--------------------------------------------------------------------------------
VB: СОВЕТЫ VB-РАЗРАБОТЧИКУ

СИНТАКСИЧЕСКИЙ АНАЛИЗ ВЕБ-СТРАНИЦ. ИСПОЛЬЗОВАНИЕ MICROSOFT HTML PARSER ДЛЯ ПОЛУЧЕНИЯ
ИНФОРМАЦИИ С ВЕБ-САЙТОВ.

Эта статья описывает основные приемы работы с Microsoft HTML Parser на примере простого
приложения для экспорта котировок с веб-сайта MSN.com. Может быть вы уже использовали
компонент WebBrowser для просмотра веб-страниц в ваших приложениях, но для нашего
примера мы заново создадим мини-браузер, который затем будет превращен в синтаксический
анализатор веб-страниц.

1. В меню File выберите New Project и создайте проект Standard EXE. Затем в меню
Project выберите Components и добавьте Microsoft HTML Object Library и Microsoft
Internet Controls.

2. На панели компонентов появятся компонент WebBrowser. Перетащите его на форму и
добавьте TextBox и Command Button. Установите значение свойства Text у TextBox в
"http://moneycentral.msn.com/";
и измените свойство Caption у кнопки на "&Browse".

3. Дважды щелкните по кнопке и в появившемся окне исходного кода введите следующий
код:

Private Sub Command1_Click()
    WebBrowser1.Navigate Text1.Text
End Sub

4. Сохраните и запустите программу. Нажав кнопку Browse, вы должны увидеть веб-страницу
по адресу, который введен в текстовом поле. Таким образом, теперь у нас есть простой
браузер для Интернет. Но это только первый шаг в создании нашего анализатора.

5. Вернемся к нашему проекту. В окне исходного кода выберем компонент WebBrowser1
и найдем событие DocumentComplete. Это событие проиходит когда веб-страница полностью
загружена в окне браузера.

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
End Sub

Компонент WebBrowser имеет свойство Document, которое может быть типа IHTMLDocument
и работать следующим образом

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
 Dim Doc As IHTMLDocument2
 Set Doc = WebBrowser1.Document
End Sub

Новый тип IHTMLDocument2 имеет возможности, недоступные в IHTMLDocument. Вы можете
использовать IHTMLDocument взамен IHTMLDocument2 для систем со старой версией Internet
Explorer. И кроме того там есть похожий тип IHTMLDocument3, который также можно использовать,
если вы знаете как он работает. Сразу заметим, что если вы просматриваете документы
Word или XML, то можно объявлять переменную Doc как Document (для Word) или DOMDocument
(для XML).

6. Анализируя страницу с http://moneycentral.msn.com/
присвоим второму тэгу INPUT на этой странице значение MSFT (лучше, если это значение
будет вводится в поле Text1) и затем сделаем отправку (submit) формы.

Private Sub Command1_Click()
    WebBrowser1.Navigate Text1.Text
End Sub

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
 Dim Doc As IHTMLDocument2
    Set Doc = WebBrowser1.Document
    If URL = "http://moneycentral.msn.com/home.asp";
Then
        Dim Inputs As IHTMLElementCollection
        Set Inputs = Doc.All.tags("INPUT")
        Dim Element As IHTMLElement
        Set Element = Inputs.Item(1, 1)
        Dim InputElement As IHTMLInputElement
        Set InputElement = Element
        InputElement.Value = Text1.Text
        Doc.Forms.Item(0, 0).submit
    End If
End Sub

Сейчас вы можете спросить "Почему же нельзя получить требуемую информацию прямо
c http://moneycentral.msn.com/scripts/webquote.dll?ipage=qd&Symbol=msft";?
Да, пока это работает, но данным примером мы показываем как использовать HTML-формы
в более сложных ситуациях.

Если вы прямо сейчас запустите программу, то заметите, что наш пример будет бесконечно
загружать одну и ту же страницу. Приложение продолжает искать форму, заполнять ее
и делать submit. Поэтому каждый раз вызывается метод DocumentComplete. Для устранения
этой проблемы необходимо добавить проверку в DocumentComplete, чтобы отправка формы
срабатывала только один раз на нужной веб-странице.

7. Итак, программный код будет выглядеть следующим образом:

Private Sub Command1_Click()
    WebBrowser1.Navigate Text1.Text
End Sub

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
 Dim Doc As IHTMLDocument2
    Set Doc = WebBrowser1.Document
    If URL = "http://moneycentral.msn.com/home.asp";
Then
        Dim Inputs As IHTMLElementCollection
        Set Inputs = Doc.All.tags("INPUT")
        Dim Element As IHTMLElement
        Set Element = Inputs.Item(1, 1)
        Dim InputElement As IHTMLInputElement
        Set InputElement = Element
        InputElement.Value = Text1.Text
        Doc.Forms.Item(0, 0).submit
    ElseIf URL = "http://moneycentral.msn.com/scripts/webquote.dll?ipage=qd&Symbol=";
& Text1.Text Then
        Dim Tables As IHTMLElementCollection
        Set Tables = Doc.All.tags("TABLE")
        Dim Quote As IHTMLElement
        Set Quote = Tables.Item(14, 14).All.tags("TD").Item(2, 2)
        MsgBox Quote.innerText
    End If
End Sub

На этом заключительном этапе наш браузер превратился в некое подобие синтаксического
анализатора веб-страниц. Что произойдет если на MoneyCentral решат изменить раскладку
страницы? Лучшей стратегией будет обращение к странице, созданной с определенной
логикой. Если вы уверены, что котировки акций обычно расположены перед заголовками
новостей, тогда имеет смысл искать таблицу котировок, идя назад (к началу страницы)
от таблицы с новостями. Другой тактикой будет легкое изменение вашей программы-анализатора
когда изменится формат запрашиваемой страницы. Один из путей сделать это - разбить
единую процедуру анализа на более меньшие. В этом случае после изменения страницы
можно будет обойтись либо изменением порядка вызываемых процедур, либо включением
новых. Кроме того, это позволит другим программистам, использующим ваш исходный код,
без труда вносить изменения пользуясь общим интерфейсом. Для этого нужно будет IHTMLDocument
передавать как параметр из функции DocumentComplete в другие модули, которые будут
анализировать его содержимое. Это позволит легко разбить программу на модули.

И в заключение, перед тем, как вы начнете использовать свое приложение, некоторая
информация для внимания. Есть много сайтов, которым безразлично, что посетители скачивают
содержимое их сайта. Если вы предполагаете использовать экпортируемые данные для
переиздания на своей веб-странице, то лучше, если вы будете иметь предварительное
согласие с тем сайтом, с которого берете информацию.

-------
Полностью эту статью вы сможете найти по адресу:

http://vbcity.com/vbcode/ru/articles.asp

В следующем выпуске будет опубликовано продолжение серии советов по оптимизации ASP-кода
о проблемах кэширования компонентов в объектах Application и Session.

C уважением,
Алексей Смирнов
--------------------------------------------------------------------------------

http://vbcity.com/vbcode/ru/home.asp


http://subscribe.ru/
E-mail: ask@subscribe.ru

В избранное