Компонент TIdHTTP
Идем на вкладку Indy Clients и из широчайшего выбора компонентов останавливаемся на TIdHTTP. Компонент TIdHTTP (Indy клиент HTTP) используется для поддержки сетевого протокола HTTP на стороне клиента (поддерживаются версии 1.0 и 1.1, включая операции GET, POST и HEAD). Кроме того, обеспечивается поддержка аутентификации пользователей и применение прокси-серверов. Можете самостоятельно поэкспериментировать с ним. Я же покажу самое простое. Киньте на новую форму этот компонент, мемо и кнопку. В обработчике клика кнопки напишите:
tryВсего одна строчка кода — и в переменной s у вас окажется всё, что вернет Get-запрос. Мы получили все, что нужно для дальнейшей обработки. Кстати, если вы еще не знакомы с протоколом HTTP, то бегом знакомиться.
s := IdHTTP1.Get('http://yandex.ru');
Memo1.Text := s;
except
end;
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 останется то, что нам надо. Как вы видите, содержимое страницы загружается в файл, потом читается из файла, а сам файл, как ненужный рудимент, удаляется.
Остальные возможные способы будем разбирать по мере надобности. Пока что этих хватит даже с избытком.
подскажыте один момент машенька. ситуация слудуящая страница содержыт яваскрипт который формирует ифрейм с капчей если получать страницу гет запросом через инди, то ни фрейма ни рисунка капчи я не получаю, как можно решыть эту проблему
ОтветитьУдалитьseoblog, я не могу сказать точно, надо разбираться, сама не люблю капчи :)
ОтветитьУдалитьСообщение немного по теме. На странице есть кнопка, по щелчку на которую формируется ссылка на файл через JS и потом как в Internet Explorer предлагается его скачать. Как быть в данном случае ? UrlDownloadToFile не действует в данном случае, даже если я знаю какая ссылка сгенерирована
ОтветитьУдалитьТагир, а запускать JS не пробовали? http://parsing-and-i.blogspot.ru/2009/02/javascript-twebbrowser-delphi.html
УдалитьЯ не могу сказать ничего определенного, надо смотреть код ява-скрипта.