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

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

参考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 内容。