如何通过VC的 CHttpFile 抓取网页内容

如何通过VC的 CHttpFile 抓取网页内容 [2009-6-30 13:08:02]
在点击一个按钮时开始请求你输入的地址。
void CHttpFileDlg::OnButton1()
{
    CString url;
    GetDlgItemText(IDC_EDIT1,url);  // IDC_EDIT1 是一个输入框的名字。
    char* headers="Accept:*/*/r/nAccept-Language:zh-cn/r/nUser-Agent:VCTestClient/r/n";
    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 += "/r/n";
        }

        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、另一个是CFile、还有一也是最为关键的CInternetSession。
CFile: 类CFile是基类的Microsoft基础类档案。它直接提供无缓冲,二进制磁盘输入/输出服务,并间接支持文本文件和存储的文件通过其派生类。 CFile工程与CArchive类支持序列化的Microsoft基础类物体。
 
CHttpFile:类CHttpFile规定的功能要求,并宣读文件HTTP服务器上的。如果您的互联网会议上读取数据的一个HTTP服务器,您必须创建一个实例CHttpFile 。
 
CInternetSession: 使用类CInternetSession创建和初始化一个或几个同时互联网会话,如有必要,来描述您的连接到代理服务器。如果您的Internet连接必须保持期限的申请,您可以创建一个CInternetSession成员类CWinApp 。
 
以上仅供参考,本站原创文章,如有转载请带链接注明出自 网络自由人
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值