资讯详情

网络爬虫C实现http://blog.csdn.net/xu3737284/article/details/9614933

  1. #include<sys/types.h>
  2. #include<sys/stat.h>
  3. #include<fcntl.h>
  4. #include<winsock2.h>
  5. #include<unistd.h>
  6. #include <stdio.h>  
  7. #include <string.h>  
  8. #include <stdlib.h>  
  9. #include <errno.h>  
  10. #include <locale.h>  
  11.   
  12. #define bzero(p, s) memset(p, 0, s)  
  13. #define USERAGENT "Wget/1.10.2"  
  14. #define ACCEPT "*/*"  
  15. #define ACCEPTLANGUAGE "zh-cn,zh;q=0.5"  
  16. #define ACCEPTENCODING "gzip,deflate"  
  17. #define ACCEPTCHARSET "gb2312,utf-8;q=0.7,*;q=0.7"  
  18. #define KEEPALIVE "300"  
  19. #define CONNECTION "keep-alive"  
  20. #define CONTENTTYPE "application/x-www-form-urlencoded"  
  21.   
  22. #define MAXFILENAME 14  
  23. #define DEBUG 1  
  24.   
  25. typedef struct webnode  
  26. {  
  27.     char * host;                 /* 网页所在的主机 */  
  28.     int    port;                 /* 网络服务器所使用的端口 */  
  29.     char *  dir;                 /* 网页所在的目录 */  
  30.     char * page;                 /* 网页文件名 */  
  31.     char * file;                 /* 本地保存的文件名 */  
  32.     char IsHandled;              /* 是否处理过 */  
  33.     struct webnode * brother;    /* 兄弟节点链表指针 */  
  34.     struct webnode * child;      /* 子节点链表指针 */  
  35. } WEBNODE;  
  36.   
  37. struct sockaddr_in server_addr;  
  38. int sockfd = 0, dsend = 0, totalsend = 0, nbytes = 0, reqn = 0, i = 0, j = 0, ret = 0;  
  39. struct hostent *host;  
  40. char request[409600] = "", buffer[1024] = "", httpheader[1024] = "";  
  41. int FileNumber = 0;  
  42. char e[2] = "@/";  
  43. WEBNODE * NodeHeader, * NodeTail, * NodeCurr;  
  44. char * mapped_mem;  
  45.   
  46. int GetHost(char * , char ** , char ** , int * , char ** ); /**/  
  47. void AnalyzePage(WEBNODE *); /**/  
  48. void AddInitNode(char *, char *, int, char * ); /**/  
  49. void HandleInitNode(WEBNODE *); /**/  
  50. void DisplayNode(WEBNODE *); /**/  
  51. void HandOneNode(WEBNODE *); /**/  
  52. void DoneWithList(int); /**/  
  53. void DoOnce(); /**/  
  54. void ConnectWeb(void); /**/  
  55. void SendRequest(void); /**/  
  56. void ReceiveResponse(void); /**/  
  57. void GetEmail(char * ); /**/  
  58. void GetLink(char * ); /**/  
  59. void GetBeforePos(char * , char ** ); /**/  
  60. void GetAfterPos(char * , char ** ); /**/  
  61. void AddChildNode(WEBNODE * , char * ); /**/  
  62. void GetAfterPosWithSlash(char * , char ** ); /**/  
  63. void GetMemory(char ** , int ); /**/  
  64. int IsExistWeb(WEBNODE * , char * , char * , int , char * ); /**/  
  65. void Rstrchr(char * , int , char ** ); /**/  
  66. int GetLocalAgent(char * UserAgent, char * Accept, char * AcceptLanguage, char * AcceptEncoding, char * AcceptCharset, char * KeepAlive, char * Connection, char * ContentType); /**/  
  67.   
  68. /************************************************************** 
  69. 功能:设置 HTTP 协议头内容的一些固定值 
  70. ***************************************************************/  
  71. int GetLocalAgent(char * UserAgent, char * Accept, char * AcceptLanguage, char * AcceptEncoding, char * AcceptCharset, char * KeepAlive, char * Connection, char * ContentType)  
  72. {  
  73.     memcpy(UserAgent, USERAGENT, strlen(USERAGENT));  
  74. 标签: tival压力变送器tst

    锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台