首页 > Web开发 > 详细

MFC抓取网页代码简单版。

时间:2014-08-17 00:59:41      阅读:529      评论:0      收藏:0      [点我收藏+]

最近又在网上找了一些有关MFC抓取网页代码的文章看,发现有个比较简单的代码,和大家分享下。

    CInternetSession session(NULL, 0);
    CHttpFile* htmlFile = NULL;

    CString strLine, strHtml;
    CString url = _T("http://www.tqyb.com.cn/data/gzWeather/gz_weatherForecastInDays.js?");
    TCHAR sRecv[1024];
    UINT CodePage = 65001;//CP_UTF8:65001 CP_ACP:0  
  strHtml = _T("");
    //获取网页源码  
    htmlFile = (CHttpFile*)session.OpenURL(url);//重新打开连接  
    DWORD dwStatusCode;  //接受请求返回值
    htmlFile->QueryInfoStatusCode(dwStatusCode);
    if (dwStatusCode == HTTP_STATUS_OK)
    {
        while (htmlFile->ReadString(sRecv, 1024))
        {

            // 编码转换,可解决中文乱码问题  
            //gb2312转为unicode,则用CP_ACP  
            //gbk转为unicode,也用CP_ACP  
            //utf-8转为unicode,则用CP_UTF8  
            int nBufferSize = MultiByteToWideChar(CodePage, 0, (LPCSTR)sRecv, -1, NULL, 0);

            wchar_t *pBuffer = new wchar_t[nBufferSize + 1];
            memset(pBuffer, 0, (nBufferSize + 1)*sizeof(wchar_t));

            //gb2312转为unicode,则用CP_ACP  
            //gbk转为unicode,也用CP_ACP  
            //utf-8转为unicode,则用CP_UTF8  
            MultiByteToWideChar(CodePage, 0, (LPCSTR)sRecv, -1, pBuffer, nBufferSize*sizeof(wchar_t));

            strHtml += pBuffer;
            strHtml += "\r\n";
            delete pBuffer;
        }
    }
    
    htmlFile->Close();
    session.Close();
    delete htmlFile;

注意了,这个网址代码格式是UTF8,中文会乱码,所以加了一个字符之间的转换,//PageCode = 65001.

而且在设置vs时,字符集要设置成多字符。

项目->属性->字符集->多字节字符。

MFC抓取网页代码简单版。,布布扣,bubuko.com

MFC抓取网页代码简单版。

原文:http://www.cnblogs.com/learning-lzj2014/p/3917119.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!