zoukankan      html  css  js  c++  java
  • 如何通过VC的 CHttpFile 抓取网页内容

    在点击一个按钮时开始请求你输入的地址。
    void CHttpFileDlg::OnButton1() 
    {
       CString url;
       GetDlgItemText(IDC_EDIT1,url); // IDC_EDIT1 是一个输入框的名字。
       char* headers="Accept:*/* Accept-Language:zh-cn User-Agent:VCTestClient ";
       CInternetSession Sess;
       CHttpFile* cFile = (CHttpFile*)Sess.OpenURL(url,1,INTERNET_FLAG_TRANSFER_ASCII||INTERNET_FLAG_RELOAD,headers,strlen(headers));

       DWORD dwStatusCode;
       cFile->QueryInfoStatusCode(dwStatusCode);
       if(dwStatusCode == HTTP_STATUS_OK)
       {
         CString szData,szAllData;
         while(cFile->ReadString(szData))
         {
           szAllData += szData;
           szAllData += " ";
         }

         cFile->Close();
         Sess.Close();
         CString name = GetFileName(url,TRUE);
         CFile file(name, CFile::modeCreate | CFile::modeWrite);
         file.Write(szAllData,szAllData.GetLength());
         file.Close();
       }
       else
       {
         MessageBox("请求失败。。。。");
       }

    }

     
    下面是获取请求的文件名,在另存到本地时用同样的文件名。
    CString CHttpFileDlg::GetFileName(CString FileName, BOOL Ext)
    {   
       int Where;   
       Where = FileName.ReverseFind('\');  
       if (Where == -1)  
         Where = FileName.ReverseFind('/');  
       CString FileTitle = FileName.Right(FileName.GetLength() - 1 - Where);  
       if (!Ext)  
       {  
         int Which = FileTitle.ReverseFind('.');   
         if (Which != -1)   
           FileTitle = FileTitle.Left(Which);   
       }
       return FileTitle;   
    }
     
    如下图:
    CHttpFile 应用程序
     
    小结:
    在此程序中我认识了三个类的应用,一个是CHttpFile、另一个是CFile、还有一也是最为关键的CInternetSession。
    CFile: 类CFile是基类的Microsoft基础类档案。它直接提供无缓冲,二进制磁盘输入/输出服务,并间接支持文本文件和存储的文件通过其派生类。 CFile工程与CArchive类支持序列化的Microsoft基础类物体。
     
    CHttpFile:类CHttpFile规定的功能要求,并宣读文件HTTP服务器上的。如果您的互联网会议上读取数据的一个HTTP服务器,您必须创建一个实例CHttpFile 。
     
    CInternetSession: 使用类CInternetSession创建和初始化一个或几个同时互联网会话,如有必要,来描述您的连接到代理服务器。如果您的Internet连接必须保持期限的申请,您可以创建一个CInternetSession成员类CWinApp 。
  • 相关阅读:
    邮件与短信
    面向对象--第二部分
    #实现一个文件的拷贝功能,注意:大文件的问题
    link标签和script标签跑到body下面,网页顶部有空白
    svn利用TortoiseSVN忽略文件或文件夹
    CS6破解
    获得指定元素的透明度值
    IE6不支持position:fixed属性
    jQuery获取自身HTML
    margin负值
  • 原文地址:https://www.cnblogs.com/ainima/p/6331148.html
Copyright © 2011-2022 走看看