大家好
我想解析一份本地的HTML 文件 截取他的 URL 链接
实现效果: (和 在IE 中 右击 点 用**下载全部链接 相同) 得到链接名 和链接我用的是VC
我不想在上面增加一个 CHtmlView ,把它打开, 再解析 。
我只是想把它 以文件的形式 打开、 读取 再直接解析。
谢谢大家~
我想解析一份本地的HTML 文件 截取他的 URL 链接
实现效果: (和 在IE 中 右击 点 用**下载全部链接 相同) 得到链接名 和链接我用的是VC
我不想在上面增加一个 CHtmlView ,把它打开, 再解析 。
我只是想把它 以文件的形式 打开、 读取 再直接解析。
谢谢大家~
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
NULL);
if (INVALID_HANDLE_VALUE == hFile)
{
//return HRESULT_FROM_WIN32(GetLastError());
return ;
} HRESULT hResult = E_FAIL; DWORD dwRead = 0;
DWORD dwFileSize = GetFileSize(hFile, NULL); // No HiOrder DWORD required
char* pszHtmlText = (char*)_alloca(dwFileSize + 1);
if (ReadFile(hFile, pszHtmlText, dwFileSize, &dwRead, NULL) == 0)
{
//ATLTRACE2(atlTraceRegistrar, 0, "Read Failed on file%s\n", OLE2CT(bstrFileName));
hResult = HRESULT_FROM_WIN32(GetLastError());
} CloseHandle(hFile);
CComBSTR bstrHtmlText = pszHtmlText;
//
// if (SUCCEEDED(hResult))
{
// pszHtmlText[dwRead] = NULL;
// LPTSTR szConverted = A2T(pszHtmlText);
// ATLTRACE(szConverted);
}
//
//////////////////////////////////////////////////////////////////////////
IHTMLDocument2 *pDoc = NULL;
CoCreateInstance(CLSID_HTMLDocument,
NULL,
CLSCTX_INPROC_SERVER,
IID_IHTMLDocument2,
(LPVOID *) &pDoc); if (pDoc)
{
IPersistStreamInit *pPersist = NULL;
pDoc->QueryInterface(IID_IPersistStreamInit,
(LPVOID *) &pPersist);
if (pPersist)
{
IMarkupServices *pMS = NULL;
pPersist->InitNew();
pPersist->Release(); pDoc->QueryInterface(IID_IMarkupServices,
(LPVOID *) &pMS);
if (pMS)
{
IMarkupContainer *pMC = NULL;
IMarkupPointer *pMkStart = NULL;
IMarkupPointer *pMkFinish = NULL; pMS->CreateMarkupPointer(&pMkStart);
pMS->CreateMarkupPointer(&pMkFinish); pMS->ParseString(bstrHtmlText,
0,
&pMC,
pMkStart,
pMkFinish); if (pMC)
{
IHTMLDocument2 *pNewDoc = NULL;
pMC->QueryInterface(IID_IHTMLDocument,
(LPVOID *) &pNewDoc); if (pNewDoc)
{
// do anything with pNewDoc, in this case
// get the body innerText.
//IHTMLElement *pBody;
//pNewDoc->get_body(&pBody); //if (pBody)
{
//BSTR strText; //pBody->get_innerText(&strText);
//pBody->Release(); //SysFreeString(strText);
}
IHTMLElement *pHtmlGrid = NULL;
GetElementByID(pNewDoc, CComBSTR("DataGrid"), &pHtmlGrid); CComQIPtr<IHTMLTable2> spGridTable = pHtmlGrid; if (spGridTable)
{
BSTR strText=NULL;
CComPtr<IHTMLElementCollection> pCellCollection; spGridTable->get_cells(&pCellCollection); SysFreeString(strText);
} pNewDoc->Release();
} pMC->Release();
} if (pMkStart)
pMkStart->Release(); if (pMkFinish)
pMkFinish->Release(); pMS->Release();
}
} pDoc->Release();
}
提交出问题了~到这里 领分:)
http://community.csdn.net/Expert/topic/3860/3860388.xml?temp=9.699649E-02