Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.05.11;
Скачать: [xml.tar.bz2];

Вниз

TWebBrowser- получение HTML   Найти похожие ветки 

 
Alral ©   (2008-04-11 16:15) [0]

Здравствуйте.
У меня вопрос: как с помощью компонента WebBrowser получить только HTML-код страницы, не загружая ничего иного, и прочитать его?
Заранее спасибо.
С уважением, Александр.


 
clickmaker ©   (2008-04-11 16:20) [1]

для этого не нужен брофзер
TIdHttp или InternetOpenUrl()


 
Alral ©   (2008-04-11 16:23) [2]

Проблема в том, что Indy-компонентов у меня нет (т.к. Turbo Delphi 2006).


 
Reindeer Moss Eater ©   (2008-04-11 16:26) [3]

С этим любой тсп клиент справится


 
clickmaker ©   (2008-04-11 16:41) [4]


> [2] Alral ©   (11.04.08 16:23)

через WinInet Api тогда
там нескольки вызовов всего достаточно:
InternetOpen
InternetOpenUrl
InternetReadFile


 
Alral ©   (2008-04-11 18:57) [5]


> Reindeer Moss Eater ©   (11.04.08 16:26) [3]
>
> С этим любой тсп клиент справится

Простите, не могли бы вы пояснить как это сделать, например, через TCPClient?


 
AIK ©   (2008-04-11 19:08) [6]

Вобшета для этого подходит и Memo, типа Memo1.Lines.LoadFromFile("C:\Мастера DELPHI.htm"), а вот если вам надо через www загружать то не подойдет


 
Alral ©   (2008-04-11 22:00) [7]


> AIK ©   (11.04.08 19:08) [6]
>
> Вобшета для этого подходит и Memo, типа Memo1.Lines.LoadFromFile("C:
> \Мастера DELPHI.htm"), а вот если вам надо через www загружать
> то не подойдет


Мне именно надо загружать HTML-код страницы с WWW. При этом другая "нагрузка" сайта (картинки, и т.п.) мне не нужна.


 
palva ©   (2008-04-11 22:35) [8]

> Мне именно надо загружать HTML-код страницы
А почему обязательно через WebBrowser? Он, кстати, исказит код страницы, выбросит пустые строки, сделает отступы и т. д. Вам же этого не нужно.
По-моему, надо прислушаться к [4] или есть такая функция URLDownloadToFile из модуля UrlMon (Delphi 7)


 
easy ©   (2008-04-11 22:38) [9]

http://dfc.com.ru/?sid=2&id=9&itemid=25


 
Reindeer Moss Eater ©   (2008-04-11 23:34) [10]

например, через TCPClient?

выставляем адрес + порт;
соединяемся;
райтэлн "GET /index.htm HTTP/1.0";
райтэлн;

рипит
текст страницы := текст страницы + ридэлэн;
антил прочтиаем пустую_строку;

смотрим на строку content-length и если там ....

... а еще лучше смотрим прямо в рфц.


 
Alral ©   (2008-04-12 01:33) [11]


> palva ©   (11.04.08 22:35) [8]
>
> > Мне именно надо загружать HTML-код страницы
> А почему обязательно через WebBrowser? Он, кстати, исказит
> код страницы, выбросит пустые строки, сделает отступы и
> т. д. Вам же этого не нужно.

Оформление кода мне в данный момент не важно. Важно только получить содержание для обработки самой программой.

> По-моему, надо прислушаться к [4] или есть такая функция
> URLDownloadToFile из модуля UrlMon (Delphi 7)

У меня Turbo Delphi 2006.


> Reindeer Moss Eater ©   (11.04.08 23:34) [10]

Но ведь для TCPClient необходимо знать IP, а у меня только URL


 
Alral ©   (2008-04-13 11:49) [12]


> А почему обязательно через WebBrowser? Он, кстати, исказит
> код страницы, выбросит пустые строки, сделает отступы и
> т. д. Вам же этого не нужно.

А всё-таки как это осуществить?


 
Palladin ©   (2008-04-13 12:07) [13]


>Alral ©(13.04.08 11:49) [12]


ну ведь сказали уже, используй WinInet. Он гораздо проще чем кажется.


 
palva ©   (2008-04-13 13:13) [14]

> А всё-таки как это осуществить?

То что вы просите, вряд ли возможно осуществить. Страничка уже разобрана и разложена по внутренним полочкам браузера. Браузер может  собрать страничку обратно, но это уже не будет оригиналом. Если хотите, можете попробовать такой код:

procedure TForm1.FormCreate(Sender: TObject);
begin
 WebBrowser1.Navigate("http://,,,,);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 document: IHTMLDocument2;
 docAll: IHTMLElementCollection;
 firstElement: IHTMLElement;
begin
 document := WebBrowser1.Document as IHTMLDocument2;
 if Assigned(document) then
 begin
   docAll := document.all;
   firstElement := docAll.Item(0,"") as IHTMLElement;
   Memo1.Text := firstElement.OuterHTML;
 end
end;


 
ЦУП ©   (2008-04-13 17:27) [15]

Не надо WebBrowser.

////////////////////////////////////////////////////////////////////////////////
//
//  Демо получения HTML кода страницы
//  Автор: Александр (Rouse_) Багель
//  c Fangorn Wizards Lab 1998 - 2003
//  19 января 2003

unit GetUrl;

interface

uses
 Windows, Wininet;

const
 HTTP_PORT = 80;
 CRLF = #13#10;
 Header = "Content-Type: application/x-www-form-urlencoded" + CRLF;

function GetPage(const URL: String): String;

implementation

function DelHttp(URL: String): String;
begin
 if Pos("http://", URL) > 0 then Delete(Url, 1, 7);
 Result := Copy(Url, 1, Pos("/", Url) - 1);
 if Result = "" then Result := URL + #0;
end;

function GetPage(const URL: String): String;
var
 FSession, FConnect, FRequest: HINTERNET;
 FHost, FScript, SRequest: String;
 Ansi: PAnsiChar;
 Buff: array [0..1023000] of Char;
 BytesRead: Cardinal;
 Res, Len: DWORD;
begin
 Result := "";
 // Небольшой парсинг
 // вытаскиваем имя хоста и параметры обращения к скрипту
 FHost := DelHttp(Url);
 FScript := Url;
 Delete(FScript, 1, Pos(FHost, FScript) + Length(FHost));
 //FScript := FHost + "/" +FScript;

 // Инициализируем WinInet
 FSession := InternetOpen("DMFR", INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
 if not Assigned(FSession) then Exit;
 try
   // Попытка соединения с сервером
   FConnect := InternetConnect(FSession, PChar(FHost), HTTP_PORT, nil,
                               "HTTP/1.0", INTERNET_SERVICE_HTTP, 0, 0);
   if not Assigned(FConnect) then Exit;
   try
     // Подготавливаем запрос страницы
     Ansi := "text/*";
     FRequest := HttpOpenRequest(FConnect, "GET", PChar(FScript), "HTTP/1.1",
                                 nil, @Ansi, INTERNET_FLAG_RELOAD, 0);
     if not Assigned(FConnect) then Exit;
     try
       // Добавляем заголовки
       if not (HttpAddRequestHeaders(FRequest, Header, Length(Header),
                                     HTTP_ADDREQ_FLAG_REPLACE or
                                     HTTP_ADDREQ_FLAG_ADD or
                                     HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA)) then Exit;

       // Проверяем запрос:
       Len := 0;
       Res := 0;
       SRequest := " ";
       HttpQueryInfo(FRequest, HTTP_QUERY_RAW_HEADERS_CRLF or
         HTTP_QUERY_FLAG_REQUEST_HEADERS, @SRequest[1], Len, Res);
       if Len > 0 then
       begin
         SetLength(SRequest, Len);
         HttpQueryInfo(FRequest, HTTP_QUERY_RAW_HEADERS_CRLF or
           HTTP_QUERY_FLAG_REQUEST_HEADERS, @SRequest[1], Len, Res);
       end;
       // Отправляем запрос
       if not (HttpSendRequest(FRequest, nil, 0, nil, 0)) then Exit;
       // Получаем ответ
       FillChar(Buff, SizeOf(Buff), 0);
       repeat
         Result := Result + Buff;
         FillChar(Buff, SizeOf(Buff), 0);
         InternetReadFile(FRequest, @Buff, SizeOf(Buff), BytesRead);
       until BytesRead = 0;
     finally
       InternetCloseHandle(FRequest);
     end;
   finally
     InternetCloseHandle(FConnect);
   end;
 finally
   InternetCloseHandle(FSession);
 end;
end;

end.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.05.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.006 c
2-1208200976
Boris
2008-04-14 23:22
2008.05.11
Бинарный файл


2-1207926538
Снежинка
2008-04-11 19:08
2008.05.11
Запрос


6-1185968146
Тестер2
2007-08-01 15:35
2008.05.11
Sockets, MaxDataLen=8192


15-1206640906
Сашик
2008-03-27 21:01
2008.05.11
Архивы старых форумов


2-1207843572
Дмитрий
2008-04-10 20:06
2008.05.11
ActiveX vs. WinAPI (просто)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский