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

CHtmlView 获取div的内容

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

img

  • 写回答

7条回答 默认 最新

  • 「已注销」 2023-02-23 11: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月4日
  • 已采纳回答 2月24日
  • 修改了问题 2月23日
  • 创建了问题 2月23日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?