程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++:怎麼下載網頁並保存

C++:怎麼下載網頁並保存

編輯:C++入門知識

本代碼利用WinInet類,直接打開會話,進行讀取並保存網頁。

BOOL CDdDlg::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回車符
 CString strPath;
 GetModuleFileName(NULL,strPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);
    strPath.ReleaseBuffer ();
    int nPos;
    nPos=strPath.ReverseFind (‘\\’);
    strPath=strPath.Left (nPos);

    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;
}

只需加入下面的頭文件,便可應用該函數。

#include "afxinet.h" //加入下載網頁要用的頭文件
GetSourceHtml(CString theUrl,CString Filename) 第一個參數為要下載的網址,第二個為要保存的文件名。

 作者“ 李木空間 ”

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved