设为首页 加入收藏

TOP

C++写的socket网络爬虫(一)
2014-04-06 17:35:03 来源: 作者: 【 】 浏览:428
Tags:socket 网络 爬虫

  C++写的socket网络爬虫,代码会在最后一次讲解中提供给大家,同时我也会在写的同时不断的对代码进行完善与修改

  我首先向大家讲解如何将网页中的内容,文本,图片等下载到电脑中。

image

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

image

  程序的部分代码如下,讲解在代码的下面,下载链接在最后给出,

  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;

  }

     

首页 上一页 1 2 3 4 5 下一页 尾页 1/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇数据结构内存管理c++实现 下一篇c++用迭代做直尺刻度

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·HTTPS 详解一:附带 (2025-12-26 02:20:37)
·TCP/IP协议到底在讲 (2025-12-26 02:20:34)
·TCP和UDP在socket编 (2025-12-26 02:20:32)
·有没有适合新手练习 (2025-12-26 01:48:47)
·用清华镜像网怎么下 (2025-12-26 01:48:44)