求助:c++写网络爬虫!
我原来用java写过一个爬虫,现在用c++写,遇到一些问题。
发现c++的网络编程还是挺复杂的,要调用到底层的函数。我想求教谁用C++写过爬虫的,我应该是用winsock2编程呢还是调用MFC中的CSocket编程还是有其他更好方式?
还有c++写爬虫要注意到哪些问题?麻烦知道的帮助我一下吧!
[解决办法]
不要用MFC中的CSocket写,这几乎是MFC中最垃圾一部分(个人看法)。
C++网络爬虫,网上应该会有源代码吧?搜搜。
[解决办法]
给你一个简单的例子
#include <fstream>
#include <afx.h>
#include <afxinet.h>
using std::ofstream;
using std::endl;
int main()
{
CInternetSession session("HttpClient");
CString urlBase = "http://t.sina.com.cn/";
DWORD dwStatusCode;
char buffer[16];
bool flag=true;
for (unsigned long i(1);flag;++i)
{
CHttpFile *pfile = (CHttpFile *)session.OpenURL(urlBase+_ltoa(i,buffer,10));
pfile -> QueryInfoStatusCode(dwStatusCode);
if(dwStatusCode == HTTP_STATUS_OK)
{
CString data;
while (pfile -> ReadString(data))
{
}
}
else
{
flag=false;
}
pfile->Close();
delete pfile;
}
session.Close();
return 0;
}
[解决办法]
这是与平台相关的要求,在c++中,这种代码必须借助一个现成的类库。就算是Qt也是因为有了不同的编译器才得以源码跨平台。所以,你这个问题不是很麻烦,而是解决不了。
在windows下,用c++的话,还是应该考虑首选MFC的,当然如果熟悉的话,QT也行啊。
[解决办法]
libcurl
[解决办法]
libcurl 正适合你。
官网:http://curl.haxx.se/libcurl/