最近有個專案需要讀取網頁進行資料對接。網頁內容一項如下:
<div id="div1" name="RE" >你好,這是資料!</div>
試問,如何用VC通過Microsoft web browser控制,讀取上面DIV欄中的資料內容?
最終結果要求是:
CString sStr;
sStr="你好,這是資料!"
請指教。
uj5u.com熱心網友回復:
利用CHtmlView等,加載頁面,然后就可以通過IHtmlDocument等來獲取內容uj5u.com熱心網友回復:
因計劃要把這一部份封成DLL,所以沒有用CHtmlView,而是用Microsoft web browser控制元件。我7年前用VB寫過代碼也取出過,現在也忘了不清楚用VC怎么取出來。望樓下多指點。
uj5u.com熱心網友回復:
可通過網頁的視窗句柄HWND,得到其IHTMLDocument2指標。然后再通過IHTMLDocument2 訪問該頁面的內容。
參考資料:
1、知道一個網頁的HWND,如何得到其頁面的文本內容,或者是原始碼也可以。http://www.debugease.com/vb/3188722.html
2、MSDN文章:HOWTO: Get IHTMLDocument2 from a HWND (Q249232)
uj5u.com熱心網友回復:
可以按著xml來決議,找一個xml決議類就可以uj5u.com熱心網友回復:
bool CPublic::sGetText(CString URL, CString &OutText)
{
CInternetSession session;
try
{
CHttpFile *pF = (CHttpFile *)session.OpenURL(URL, 1, INTERNET_FLAG_TRANSFER_ASCII | INTERNET_FLAG_RELOAD, NULL, 0);
CString strTempData="";
CString strData="";
while (pF->ReadString(strTempData))
{
strData += "\r\n";
strData += strTempData;
}
//AfxMessageBox(strData);//顯示網頁源代碼
OutText = strData;
strTempData.ReleaseBuffer();
strData.ReleaseBuffer();
pF->Close();
delete pF;
session.Close(); //關倍訓話
}
catch (CInternetException *e)
{
e->Delete();
}
if (OutText.IsEmpty())
{
return false;
}
else
{
return true;
}
}
uj5u.com熱心網友回復:
通過ActiveX類WinInet可以。uj5u.com熱心網友回復:
如果只是一些簡單的應用,不如從文本中直接去決議轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/99750.html
標籤:HTML/XML
下一篇:vs中cpp檔案右下角紅色圓斑
