我在對話框里加入IDC_EXPLORER控制元件,并使用CWebBrowser2來打開指定網頁,想通過這個得到網頁的源代碼,如:http://www.clloo.com/m/snapup/26447671.html這樣一個網頁,可能有跳轉。在瀏覽器中直接查看源代碼,根本沒有什么東西,但在F12審查元素功能下就能看到很多,也是我希望看到的,不知道怎么實作。
我用如下代碼根本得不到想要的結果,請高手指教!!!
void CWeb_TestDlg::OnDocumentCompleteExplorer1(LPDISPATCH pDisp, VARIANT FAR* URL)
{
// TODO: Add your control notification handler code here
CString info;
BSTR bstr;
HRESULT hResult = S_OK;
IHTMLElement* pElement1 = NULL;
IHTMLElement* pElement2 = NULL;
IHTMLDocument2 *pDoc = (IHTMLDocument2 *)m_web.GetDocument();
if (NULL != pDoc)
{
hResult = pDoc->get_body(&pElement1);
if (S_OK == hResult && NULL != pElement1)
{
hResult = pElement1->get_parentElement(&pElement2);
if (S_OK == hResult && NULL != pElement2)
{
hResult = pElement2->get_outerHTML(&bstr);
if (S_OK == hResult)
{
pDoc->Release();
pDoc = NULL;
pElement1->Release();
pElement1 = NULL;
pElement2->Release();
pElement2 = NULL;
}
}
}
}
else
{
if (NULL != pDoc)
{
pDoc->Release();
pDoc = NULL;
}
if (NULL != pElement1)
{
pElement1->Release();
pElement1 = NULL;
}
if (NULL != pElement2)
{
pElement2->Release();
pElement2 = NULL;
}
return;
}
info = bstr;
SysFreeString(bstr);
}
uj5u.com熱心網友回復:
求大神們幫忙啊uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
網頁另存為 html 看看, 是否有多個檔案? 看看是否有什么線索uj5u.com熱心網友回復:
很明顯網頁用了AJAX,所以DocumentComplete的時候網頁元素還沒被創建,等腳本結束了再去訪問,也可以用定時器等個幾秒。像比分即時顯示這種可能腳本一直都在跑,那就沒辦法了,只能用定時器刷。
uj5u.com熱心網友回復:
這樣是不是就不能用這個DocumentComplete函式,那用什么函式呢?而且怎么能知道腳本結束的時間然后再去訪問?
uj5u.com熱心網友回復:
如果你找得到腳本元素的話,可以去掛HTMLScriptEvents2::onactivate找不到的話可以在最后一個DocumentComplete的時候(pDisp是第一個BeforeNavigate2事件的pDisp,如果頁面都是HTML沒有下載啦Word檔案啦這種非HTML內容的也可以去檢查頂層檔案的ready state)啟動定時器。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/21869.html
標籤:網絡編程
上一篇:SendMessage的問題
