Парсинг HTML-страниц — Часть 1

Cети и Интернет   31 декабря 2010  Автор статьи: admin 

Парсинг HTML-страниц — это автоматическое выполнение компьютером каких-либо действий (заполнение форм, получение данных и т.д.) на HTML страницах. Например, можно автоматизировать регистрацию или авторизацию на каком-нибудь сайте, или можно получить текущий курс валюты. Конечно, именно на парсинге и основано множество спамерских программ, которые то и дело рассылают рекламу по форумам и комментариям сайтов. Но мы с вами будем изучать и применять парсинг для других целей, а целью этого урока будет авторизация на нашем сайте Cybern.ru.

Для начала рассмотрим, какие данные нам потребуются, для того, чтобы залогиниться на Cybern.ru (форма была изменена, поэтому теперь залогиниться так не получится).

Форма авторизации на cybern.ru (Устаревшая)

Несомненно нам понадобятся идентификаторы “name” полей ввода логина и пароля. Узнать их можно очень просто, при помощи встроенной в браузер Opera утилиты под названием DragonFly. С ее помощью можно получить большое количество информации об каком-либо элементе HTML страницы. Достаточно запустить DragonFly и кликнуть по интересуемому элементу. Например, кликнув по полю ввода логина, я получил:

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

  • Имя поля ввода логина — log
  • Имя поля ввода пароля — pwd
  • Надпись на кнопке подтверждения — Войти

Теперь приступим непосредственно к написанию самой программы. Откроем Delphi. Разместим в новом приложении компонент TWebBrowser и две кнопки. 1 кнопка будет иметь надпись “Открыть Cybern.ru”, а вторая – “Авторизироваться”. Еще разметим на форме 2 текстовых поля ввода. Одно – для логина, другое – для пароля.

Создадим обработчик нажатия на кнопку “Открыть Cybern.ru ”:

[cc lang=»delphi»]procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate(‘http://cybern.ru’);
end;[/cc]

Создадим обработчик нажатия на кнопку “ Авторизироваться”:

[cc lang=»delphi»]procedure TForm1.Button2Click(Sender: TObject);
var
html_elements: OleVariant;//будет хранить совокупность всех элементов страницы
i,j: integer;
begin
// перебор форм на странице
for j := 0 to WebBrowser1.OleObject.Document.Forms.length — 1  do begin
html_elements := WebBrowser1.OleObject.Document.forms.item(j).elements;
// перебираем все элементы формы
for i := 0 to (html_elements.length — 1) do
begin
// Если обрабатываемый элемент — предназначен для ввода логина,
// то вводим его
if (html_elements.item(i).name = ‘log’) then
html_elements.item(i).value:=edit1.text;
// Если обрабатываемый элемент — предназначен для ввода пароля,
// то вводим его
if (html_elements.item(i).name = ‘pwd’) then
html_elements.item(i).value:=edit2.text;
// Если обрабатываемый элемент – кнопка c надписью Войти, жмем ее
if (html_elements.item(i).Value = ‘Войти’) then
html_elements.item(i).Click;
end;
end;
end;[/cc]

Наша учебная программа готова!

  • Илья

    Странно, но выдаёт не известную ошибку, не могу не как скомпилировать.

Научиться программировать

  • на Delphi

  • на Java

  • на C++