总结的VC下面读取网页的几种方式
来源:互联网 发布:java移动端开发 编辑:程序博客网 时间:2024/06/01 09:34
第一种:可以正常读取UTF8的中文网页:
#import "msxml2.dll" using namespace MSXML2;CString fetchUTF8HTMLCode(const char *url){CString respString="";::CoInitialize(NULL); try {IXMLHTTPRequestPtr xmlrequest; HRESULT hr=xmlrequest.CreateInstance("Msxml2.XMLHTTP");if(!SUCCEEDED(hr)) {AfxMessageBox(_T("无法创建XMLHTTP对象,请检查是否安装了MS XML运行库!")); }xmlrequest->open(_bstr_t("GET"),_bstr_t(url),false); xmlrequest->send();BSTR bstrbody;xmlrequest->get_responseText(&bstrbody); _bstr_t bstrtbody(bstrbody);respString = LPCTSTR(bstrtbody);}catch(...){}return respString;}
第二种,可以正常读取GBK的中文网页
#include <afxinet.h> //加入CIneternetSession的引用CString fetchGBKHTMLCode(const char *url){ CInternetSession mySession(NULL,0);CHttpFile* myHttpFile=NULL;CStringrespString="";//string myData;char myData[1024];myHttpFile=(CHttpFile*)mySession.OpenURL(url);while(myHttpFile->ReadString(myData,1024)){respString=respString+"\r\n";respString+=myData;}myHttpFile->Close ;mySession.Close ;return CString(respString);}
第三种,也可以正常读取GBK和UTF8的网页并保存到硬盘文件,但有一个问题:GBK网页我可以加个CString返回出来,但UTF8网页写进硬盘正常,如果中间加个cstring返回,则变成乱码,试了很久都不成功,希望各位提点建议。
#define MAXBLOCKSIZE 1024 #include <wininet.h>#pragma comment(lib, "wininet.lib")void fetchHTMLCode(const char *Url, const char *filename) { HINTERNET hSession = InternetOpen("zwt", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); if (hSession != NULL) { HINTERNET hURL = InternetOpenUrl(hSession, Url, NULL, 0, INTERNET_FLAG_DONT_CACHE, 0); if (hURL != NULL) { char *Temp = new char[MAXBLOCKSIZE];char *pBuf;pBuf = Temp; ULONG Number = 1; FILE *stream; if( (stream = fopen(filename, "wb" )) != NULL ) { while (InternetReadFile(hURL, Temp, MAXBLOCKSIZE - 1, &Number)&&Number > 0) { fwrite(Temp, sizeof (char), Number , stream); } fclose( stream ); } InternetCloseHandle(hURL); hURL = NULL; } InternetCloseHandle(hSession); hSession = NULL; }}这三种都是我这菜鸟网上找了半死才最终找到的,目前还只能在VC6的_MSBC模式(默认模式)下运行,UNICODE下抓取中文网页还是有问题。
各位大神请不吝赐教!
- 总结的VC下面读取网页的几种方式
- Java读取文件内容的几种方式总结
- java web读取属性文件的几种方式总结
- vc中读取wav文件的时长和文件播放的几种方式
- vc中读取wav文件的时长和文件播放的几种方式
- vc中读取wav文件的时长和文件播放的几种方式
- vc中读取wav文件的时长和文件播放的几种方式
- vc中读取wav文件的时长和文件播放的几种方式
- vc中读取wav文件的时长和文件播放的几种方式
- vc中读取wav文件的时长和文件播放的几种方式
- vc中读取wav文件的时长和文件播放的几种方式
- Linux下面CPU个数的几种方式
- Linux下面CPU个数的几种方式
- Linux下面脚本的几种执行方式
- tomcat下面发布项目的几种方式
- CSS放入网页的几种方式
- 网页中转跳转的几种方式
- VC 操作Excel的几种方式
- (精)hdoj 2391(动态规划)
- 关于验证常用的几个类文件和代码
- 明晰单元测试
- 利用SSE编程之前该思考的几个问题
- Mysql性能优化需要考虑的因素
- 总结的VC下面读取网页的几种方式
- 如何在Ubuntu11.10(32位)下载Android4.0源码(图文)
- 如何下载并编译Android4.0内核源码goldfish(图文)
- Enmu BinarySearch Array
- java.lang.NoSuchFieldError: INSTANCE
- Win7 Telnet
- 碰到这样的错误error LNK2005: _DllMain@12 already defined in LIBCMTD.lib(dllmain.obj)
- EAV 禁用开机自动扫描
- 调色板类QPalette