Получение HTML кода в Delphi
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Получение HTML кода в Delphi - 2009-05-26 17:40:54.043333
|
|
|
Qb1024
Сообщений: 98
Оценки: 0
Присоединился: 2009-02-13 21:22:06.990000
|
Подскажите функцию, чтобы на входе был url а на выходе string с кодом. Гуглем перерыл много сайтов, но там как-то всё замудрённо.
|
|
|
RE: Получение HTML кода в Delphi - 2009-05-26 17:49:56.586666
|
|
|
Sunzer
Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
|
quote:
uses WinInet function DownloadURL(const aUrl: string): Boolean; var hSession: HINTERNET; hService: HINTERNET; lpBuffer: array[0..1024 + 1] of Char; dwBytesRead: DWORD; begin Result := False; // hSession := InternetOpen( 'MyApp', INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0); hSession := InternetOpen('MyApp', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); try if Assigned(hSession) then begin hService := InternetOpenUrl(hSession, PChar(aUrl), nil, 0, 0, 0); if Assigned(hService) then try while True do begin dwBytesRead := 1024; InternetReadFile(hService, @lpBuffer, 1024, dwBytesRead); if dwBytesRead = 0 then break; lpBuffer[dwBytesRead] := #0; Form1.Memo1.Lines.Add(lpBuffer); end; Result := True; finally InternetCloseHandle(hService); end; end; finally InternetCloseHandle(hSession); end; end; procedure TForm1.Button1Click(Sender: TObject); begin DownloadURL('http://www.google.com'); end; В Memo1 будет сорец страницы.
|
|
|
RE: Получение HTML кода в Delphi - 2009-05-27 15:04:56.836666
|
|
|
Qb1024
Сообщений: 98
Оценки: 0
Присоединился: 2009-02-13 21:22:06.990000
|
Спасибо, в целом работает. Но возникла такая проблема: при нажатии кнопки получаю точно такой же код, хотя на исходном сайте он давно обновился. Вот сам код с этой процедурой, как сделать, чтобы результаты были разные? На сайте обновляется раз в 10 секунд. unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants,
Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, Menus, WinInet;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
function NeMoyaFuncia(const aUrl: string):Boolean;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TForm1.NeMoyaFuncia(const aUrl: string): Boolean;
var
hSession: HINTERNET;
hService: HINTERNET;
lpBuffer: array[0..1024 + 1] of Char;
dwBytesRead: DWORD;
begin
Result := False;
// hSession := InternetOpen( 'MyApp', INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0);
hSession := InternetOpen('MyApp', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
try
if Assigned(hSession) then
begin
hService := InternetOpenUrl(hSession, PChar(aUrl), nil, 0, 0, 0);
if Assigned(hService) then
try
while True do
begin
dwBytesRead := 1024;
InternetReadFile(hService, @lpBuffer, 1024, dwBytesRead);
if dwBytesRead = 0 then break;
lpBuffer[dwBytesRead] := #0;
Form1.Memo1.Lines.Add(lpBuffer);
end;
Result := True;
finally
InternetCloseHandle(hService);
end;
end;
finally
InternetCloseHandle(hSession);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
NeMoyaFuncia('http://bash.org.ru/forweb');
end;
end.
|
|
|
RE: Получение HTML кода в Delphi - 2009-05-27 15:51:55.550000
|
|
|
Sunzеr
Сообщений: 79
Оценки: 0
Присоединился: 2008-12-02 16:21:02.986666
|
Не понял вопроса. Хочешь что бы код обновлялся каждые 10 секунд? Поставь таймер тогда.
|
|
|
RE: Получение HTML кода в Delphi - 2009-05-28 00:35:48.756666
|
|
|
Qb1024
Сообщений: 98
Оценки: 0
Присоединился: 2009-02-13 21:22:06.990000
|
нет, прога выдаёт одно и тоже прит повторном использовании функции, хотя исходник на сайте сменился
|
|
|
RE: Получение HTML кода в Delphi - 2009-05-28 02:37:21.820000
|
|
|
FLIER
Сообщений: 628
Оценки: 0
Присоединился: 2007-08-29 01:31:15.400000
|
Советую почитать: http://parsing-and-i.blogspot.com/
|
|
|
RE: Получение HTML кода в Delphi - 2009-05-28 16:24:23.626666
|
|
|
Sunzer
Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
|
quote:
function DownloadURL_NOCache(const aUrl: string; var s: String): Boolean; var hSession: HINTERNET; hService: HINTERNET; lpBuffer: array[0..1024 + 1] of Char; dwBytesRead: DWORD; begin Result := False; s := ''; hSession := InternetOpen('MyApp', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); try if Assigned(hSession) then begin hService := InternetOpenUrl(hSession, PChar(aUrl), nil, 0, INTERNET_FLAG_RELOAD, 0); if Assigned(hService) then try while True do begin dwBytesRead := 1024; InternetReadFile(hService, @lpBuffer, 1024, dwBytesRead); if dwBytesRead = 0 then break; lpBuffer[dwBytesRead] := #0; s := s + lpBuffer; end; Result := True; finally InternetCloseHandle(hService); end; end; finally InternetCloseHandle(hSession); end; end; var s: String; begin if DownloadURL('http://www.swissdelphicenter.ch/', s) then ShowMessage(s); end;
|
|
|
RE: Получение HTML кода в Delphi - 2009-05-28 16:30:54.860000
|
|
|
Zmaster
Сообщений: 930
Оценки: 0
Присоединился: 2007-02-09 19:02:43.500000
|
quote:
ORIGINAL: FLIER Советую почитать: http://parsing-and-i.blogspot.com/ Спасибо, хорошая ссылка.
|
|
|
RE: Получение HTML кода в Delphi - 2009-06-02 13:36:49.390000
|
|
|
dos 999
Сообщений: 331
Оценки: 0
Присоединился: 2007-12-17 10:49:07.556666
|
В модуле UrlMon есть функции для решения подобный задач. например: функция URLDownloadToCacheFile получает данные из URL, записывает их в кэш-файл, поддерживаемый Internet-подсистемой ActiveX, и возвращает имя кэш-файла; функция URLDownloadToFile получает данные из URL и записывает их в заданный файл; функция URLOpenStream получает данные из URL и записывает их в поток (IStream); функция URLOpenBlockingStream аналогична функции URLOpenStream, за исключением того, что поток возвращает управление лишь после окончания приема всех данных (то есть по отношению к вам она работает синхронно); функция URLOpenPullStream аналогична функции URLOpenBlockingStream, за исключением того, что запросы чтения в поток не приводят к блокировке. [/ul]
Uses
UrlMon
...
URLDownloadToFile(nil, 'http://forum.xakep.ru, '1.txt', 0, nil)
|
|
|
|
|