Ранее я описывала самый простой способ получения html-кода страницы. Перед
тем, как
перейти к созданию прототипа парсера ключевых слов, рассмотрим еще пару
способов. При
использовании этих способов страница не отображается в контейнере.
Компонент TIdHTTP
Идем на вкладку Indy Clients и из широчайшего выбора компонентов
останавливаемся на TIdHTTP. Компонент TIdHTTP (Indy клиент HTTP) используется для поддержки
сетевого
протокола HTTP на стороне клиента (поддерживаются версии 1.0 и 1.1, включая
операции GET,
POST и HEAD). Кроме того, обеспечивается поддержка аутентификации пользователей
и
применение прокси-серверов. Можете самостоятельно поэкспериментировать с ним. Я
же покажу
самое простое. Киньте на новую форму этот компонент, мемо и кнопку. В
обработчике клика
кнопки напишите:
try
s := IdHTTP1.Get('http://yandex.ru');
Memo1.Text := s;
except
end;
Всего одна строчка кода — и в переменной s у вас окажется всё, что вернет
Get-запрос. Мы
получили все, что нужно для дальнейшей обработки.
UrlDownloadToFile
В uses добавляем UrlMon. Объявляем функцию:
function DownloadFile(SourceFile, DestFile: string): Boolean;
Реализация:
function DownloadFile(SourceFile, DestFile: string): Boolean;
begin
try
Result := UrlDownloadToFile(nil, PChar(SourceFile),
PChar(DestFile), 0,
nil) = 0;
except
Result := False;
end;
end;
Пример использования:
try
SLBody:=TStringList.Create;
sFileName:=ExtractFilePath(Application.ExeName) + 'cache.txt';
currBody:=''; if DownloadFile(LinkStr,sFileName) then
SLBody.LoadFromFile(sFileName);
currBody:=SLBody.Text;
DeleteFile(sFileName);
finally
SLBody.Free;
end;
В результате в строковой переменной currBody останется то, что нам надо. Как
вы видите,
содержимое страницы загружается в файл, потом читается из файла, а сам файл, как
ненужный
рудимент, удаляется.
Остальные возможные способы будем разбирать по мере надобности. Пока что этих
хватит
даже с избытком.
|