[vc] 請高手幫幫改良一下這個程式 |
尚未結案
|
walterwong522
一般會員 發表:1 回覆:0 積分:0 註冊:2007-04-14 發送簡訊給我 |
#pragma comment(lib, "ws2_32.lib")
#include #define _WIN32_WINNT 0x0400 #include "windows.h" #include "iostream.h" #include #include "stdio.h" #define MAX_LINE_LEN 250 char sLine[MAX_LINE_LEN]; FILE *fp,*infile; char lpbuf[4096]={0},sendhttp[4096]={0}; //////////////////////////// void conect(char ipstr[250],char ip[250] ,char filename[250]) { printf("ipstr : %s\n" , ipstr); strcat(filename,".ini"); //printf("%s\n",filename); strcpy(sendhttp,"GET "); strcat(sendhttp,ipstr); strcat(sendhttp," HTTP/1.0\r\n"); //http://? strcat(sendhttp,ip); //ip strcat(sendhttp,"\r\n"); strcat(sendhttp,"Connection:Keep-Alive\r\n\r\n"); //strcat(sendhttp,"Content-Type: text/html \r\n\r\n"); ///////////////////////////////////////////////////////// WSADATA ws; SOCKET csock; int error = WSAStartup(MAKEWORD(2,0), &ws); csock = socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in intSaddr; //建立sockaddr_in結構體變數 intSaddr memset((char *) &intSaddr,0,sizeof(intSaddr)); //清空intSaddr u_long inetAddr = inet_addr(ip); //設定連接地址64.233.189.104 hk google 64.233.183.147 // yahoo 202.43.220.99 百度 202.108.22.44 //youtube 208.65.153.251 intSaddr.sin_family =AF_INET; //通訊協議 intSaddr.sin_port =htons((u_short)80); //服務port intSaddr.sin_addr.s_addr =inetAddr; //ip地址 if(connect(csock,(struct sockaddr *)&intSaddr,sizeof(intSaddr))==0) { //printf("YES\n"); send(csock,sendhttp,sizeof(sendhttp),0); for(; ; ) { recv(csock,lpbuf,sizeof(lpbuf),0); int len = strlen(lpbuf); if( len > 0 ) { //printf("%s\n",lpbuf); fp=fopen(filename,"a "); fprintf(fp,"%s",lpbuf); len = 0; memset(lpbuf,0,sizeof(lpbuf)); fclose(fp); } // len <= 0 else { closesocket(csock); WSACleanup(); return ; } //end for } // 連接不成功 } /////////////////////////// closesocket(csock); WSACleanup(); return; } int main () { char ip[250]={0}; SYSTEMTIME systime; GetLocalTime(&systime); srand( systime.wSecond); unsigned int r1 = rand() % 256; unsigned int r2 = rand() % 256; unsigned int r3 = rand() % 256; unsigned int r4 = rand() % 256; sprintf(ip,"%d.%d.%d.%d",r1,r2,r3,r4); char timebuf[512]={0}; int year = systime.wYear; int month = systime.wMonth; int day = systime.wDay; int hour = systime.wHour; int minute = systime.wMinute; int second = systime.wSecond; int wMilliseconds = systime.wMilliseconds; sprintf(timebuf, "%d%d%d%d%d%d%d",year,month,day,hour,minute,second,wMilliseconds); //printf("%s\n",timebuf); char ipstr[250]={0}; strcpy(ipstr,"http://"); strcat(ipstr,ip); strcat(ipstr,"/index.html"); //printf("%s\n%s\n%s\n",ipstr,ip,timebuf); //設定連接地址64.233.189.104 hk google 64.233.183.147 //百度 202.108.22.44 yahoo 202.43.220.99 //香港討論區 59.188.17.132 //p2p 202.181.195.17 strcpy(ip,"202.181.195.17"); strcpy(ipstr,"http://"); strcat(ipstr,ip); strcat(ipstr,"/index.html"); conect(ipstr,ip,timebuf); Sleep(10); cin.get(); return 0; } 這個程式是可以下載到百度index.html的所有html 碼 但連上其他網頁時如這個網站 就不知道為何總是下載到一些不知道所謂的html碼 ! 我是想做個可以取得html碼的 蜘蛛程式 但最多做成以上的模樣 請高手幫我改良一下 謝謝啦! 跪求呀!!! 這個程式的問題如下: 取網頁時 有一些網頁 的html碼不完整! |
yckuo
高階會員 發表:55 回覆:389 積分:238 註冊:2003-03-07 發送簡訊給我 |
你的問題不是要人家幫你改良程式.
你要寫 spider 那你該去研讀 http://www.w3.org/Protocols/ , 瞭解 HTTP PROTOCOL 那你就會瞭解, 為何抓本站的東西取得的不是 HTML 碼. PS: 請不要拿本站當實驗對像.
------
yckuo |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |