Builder C++/Turbo C++ WebBrowser. Как получить доступ к полученному HTML-коду

Я использую Borland Turbo C++ (как Builder C++, но с меньшим количеством компонентов).

Когда я делаю Webbrowser1->Navigate(MyURL), я правильно получаю требуемый веб-сайт. В моем случае это только текстовый сайт, даже не html-код. Я вижу это в окне веб-браузера.

Как мне получить доступ к полученному тексту, чтобы иметь возможность манипулировать им, подсчитывать количество символов и т. д.? В лучшем случае, если я смогу превратить его в Ansistring.

Я понятия не имею, как это сделать. Какой класс я использую или какой тип попытаться преобразовать.


person Gregorek    schedule 29.08.2013    source источник


Ответы (1)


Сначала перейдите на MyURL:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    WebBrowser1->Navigate(MyURL);
}

Поместите коды получения в событие OnDocumentComplete:

void __fastcall TForm1::WebBrowser1DocumentComplete(TObject *Sender, LPDISPATCH pDisp,
          Variant *URL)
{
    Variant document = WebBrowser1->Document;
    Variant body = document.OlePropertyGet("body");
    Variant parentElement = body.OlePropertyGet("parentElement");
    AnsiString html = parentElement.OlePropertyGet("outerHTML");
    Memo1->Text = html; 
}

Или кратко:

Memo1->Text = Variant(WebBrowser1->Document).OlePropertyGet("body").OlePropertyGet("parentElement").OlePropertyGet("outerHTML");

Обратите внимание, что вы можете просто отправить http-запрос и получить текст ответа без TWebBrowser.

person mh taqia    schedule 29.08.2013
comment
Для повышения производительности вы должны использовать интерфейсы DOM напрямую (IHTMLDocument2, IHTMLElement и т. д.), а не через Variant/IDispatch. - person Remy Lebeau; 30.08.2013