C++写的socket网络爬虫,代码会在最后一次讲解中提供给大家,同时我也会在写的同时不断的对代码进行完善与修改
我首先向大家讲解如何将网页中的内容,文本,图片等下载到电脑中。

我会教大家如何将百度首页上的这个百度标志图片(/c/UploadFiles_4204/201403/20140331073152325.gif)抓取下载到电脑中。

程序的部分代码如下,讲解在代码的下面,下载链接在最后给出,
int main()
{
string url = "www.baidu.com";
string name = "/img/bdlogo.gif";
int port = 80;
int client_socket = makeSocket(url,port);//1
string request = "GET " + name + " HTTP/1.1\r\nHost:" + url + "\r\nConnection:Close\r\n\r\n";//2
if (send(client_socket, request.c_str(), request.size(), 0) == SOCKET_ERROR)//3
{
cout << "send error" << endl;
}
fstream file;
string fileName = FileName(name);//4
file.open(fileName, ios::out | ios::binary);//5
char buf[1024];
::memset(buf, 0, sizeof(buf));//6
int n = 0;
n = recv(client_socket, buf, sizeof(buf)-sizeof(char), 0);//3
char* cpos = strstr(buf, "\r\n\r\n");//7
file.write(cpos + strlen("\r\n\r\n"), n - (cpos - buf) - strlen("\r\n\r\n"));//7
while ((n = recv(client_socket, buf, sizeof(buf)-sizeof(char), 0)) > 0)//7
{
try
{
file.write(buf, n);
}
catch (...)
{
cerr << "ERROR" << endl;
}
}
file.close();
closesocket(client_socket);
system("pause");
return 0;
}