分类: C/C++
2008-04-23 21:35:56
如何下载并保存网页
作者:
示例程序运行效果图
如图所示,在设置下载网址后,程序下载并保存网页,并在小人的奔跑中不断地显示出来.
BOOL GetSourceHtml(CString theUrl,CString Filename) { CInternetSession session; CInternetFile* file = NULL; try { // 试着连接到指定URL file = (CInternetFile*) session.OpenURL(theUrl); } catch (CInternetException* m_pException) { // 如果有错误的话,置文件为空 file = NULL; m_pException->Delete(); return FALSE; } // 用dataStore来保存读取的网页文件 CStdioFile dataStore; if (file) { CString somecode; //也可采用LPTSTR类型,将不会删除文本中的\n回车符 BOOL bIsOk = dataStore.Open(strPath "\\" Filename, CFile::modeCreate | CFile::modeWrite | CFile::shareDenyWrite | CFile::typeText); if (!bIsOk) return FALSE; // 读写网页文件,直到为空 while (file->ReadString(somecode) != NULL) //如果采用LPTSTR类型,读取最大个数nMax置0,使它遇空字符时结束 { dataStore.WriteString(somecode); dataStore.WriteString("\n"); //如果somecode采用LPTSTR类型,可不用此句 } file->Close(); delete file; } else { dataStore.WriteString(_T("到指定服务器的连接建立失败...")); return FALSE; } return TRUE; }下面让我们来看看,如何使用它:
//获取主程序所在路径,存在全局变量strPath中 GetModuleFileName(NULL,strPath.GetBufferSetLength (MAX_PATH 1),MAX_PATH); strPath.ReleaseBuffer (); int nPos; nPos=strPath.ReverseFind (''''\\''''); strPath=strPath.Left (nPos); BOOL m_bDownloadFailed; m_bDownloadFailed=GetSourceHtml("","News.txt");//下载提示文件的默认网址其中具体实现方法,可参看下载后的示例源码既可。
作者信息:
徐景周 未来工作室(Future Studio)
地址:陕西省西安市劳动路2号院六单元 邮编:710082
EMAIL:jingzhou_xu@163.net