mickyo 2023-02-23 03:16 采纳率: 77.8%
浏览 44
已结题

CHtmlView 获取div的内容

我使用 MFC CHtmlView 类视图打开了目标网页,里面有个div如下,该div内容是通过ajax动态获取的,html源文件是没有内容的,打开网页后,内容已经显示出来了,请教如何获取到该div的内容?

img

  • 写回答

7条回答 默认 最新

  • 「已注销」 2023-02-23 03:55
    关注

    参考GPT和自己的思路,你可以使用 IHTMLDocument2 接口来获取 CHtmlView 中的 HTML 文档对象,并通过 getElementById 方法获取指定的 div 元素。

    以下是一个示例代码,可以获取名为 block_content 的 div 元素的内容:

    // 获取 CHtmlView 中的 HTML 文档对象
    IHTMLDocument2* pDoc = NULL;
    if (SUCCEEDED(m_pBrowserApp->get_Document((IDispatch**)&pDoc)))
    {
        // 获取名为 "block_content" 的 div 元素
        VARIANT varDivID;
        VariantInit(&varDivID);
        varDivID.vt = VT_BSTR;
        varDivID.bstrVal = SysAllocString(L"block_content");
        IDispatch* pDiv = NULL;
        if (SUCCEEDED(pDoc->getElementById(varDivID, &pDiv)))
        {
            // 获取 div 元素的 HTML 内容
            IHTMLElement* pElem = NULL;
            if (SUCCEEDED(pDiv->QueryInterface(IID_IHTMLElement, (void**)&pElem)))
            {
                BSTR bstrHTML;
                if (SUCCEEDED(pElem->get_innerHTML(&bstrHTML)))
                {
                    CString strHTML(bstrHTML);
                    // 输出 div 元素的内容
                    TRACE(_T("div content: %s\n"), strHTML);
                    SysFreeString(bstrHTML);
                }
                pElem->Release();
            }
            pDiv->Release();
        }
        VariantClear(&varDivID);
        pDoc->Release();
    }
    

    在上面的代码中,m_pBrowserApp 是 CHtmlView 类中的成员变量,用于获取 IWebBrowser2 接口的指针。getElementById 方法可以根据 div 元素的 ID 属性获取元素对象,get_innerHTML 方法可以获取元素的 HTML 内容。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 3月3日
  • 已采纳回答 2月24日
  • 修改了问题 2月23日
  • 创建了问题 2月23日

悬赏问题

  • ¥15 nginx使用nfs进行服务器的数据共享
  • ¥15 C#i编程中so-ir-192编码的字符集转码UTF8问题
  • ¥15 51嵌入式入门按键小项目
  • ¥30 海外项目,如何降低Google Map接口费用?
  • ¥15 fluentmeshing
  • ¥15 手机/平板的浏览器里如何实现类似荧光笔的效果
  • ¥15 盘古气象大模型调用(python)
  • ¥15 传人记程序做的plc 485从机程序该如何写
  • ¥15 已知手指抓握过程中掌指关节、手指各关节和指尖每一帧的坐标,用贝塞尔曲线可以拟合手指抓握的运动轨迹吗?
  • ¥50 libwebsockets 如何添加其他socket事件回调