【问题标题】:Builder C++/Turbo C++ WebBrowser. How to access the received HTML codeBuilder C++/Turbo C++ WebBrowser。如何访问收到的 HTML 代码
【发布时间】:2013-09-01 13:24:47
【问题描述】:

我使用 Borland Turbo C++(类似于 Builder c++,但组件较少)。

当我执行 Webbrowser1->Navigate(MyURL) 时,我会正确收到所需的网站。 就我而言,它只是一个文本网站,甚至不是 html 代码。我可以在网络浏览器的窗口中看到它。

如何访问接收到的文本以便能够对其进行操作、计算字符数等? 最好的情况是我能把它变成 Ansistring。

我不知道该怎么做。我使用哪个类或尝试转换为什么类型。

【问题讨论】:

    标签: c++builder twebbrowser borland-c++


    【解决方案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。

    【讨论】:

    • 为了获得更好的性能,您应该直接使用 DOM 接口(@98​​7654324@、IHTMLElement 等)而不是通过 Variant/IDispatch。
    猜你喜欢
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-17
    相关资源
    最近更新 更多