引用自:http://tw.knowledge.yahoo.com/question/question?qid=1008092505022

提供你一個抓網頁的程式
因為偷懶,所以你要先知道網站的IP
(可以用nslookup查詢)
另外如果想要指定網頁
程式碼中的 GET 要改成 GET xxx.html
==========================================
#include
#include
#include
#include
#include
#include
#include
#include

#define BUFSIZE 64

int main(int, char *[]) {
int socketfd;
struct sockaddr_in dist;
char buffer[BUFSIZE];

char *server_ip = "140.114.77.3"; // www.cs.nthu.edu.tw
int server_port = 80; // http
char *http_request = "GET /\n";
unsigned int request_len = strlen(http_request);

printf("create TCP socket\n");
if ((socketfd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1)
exit(1);

printf("setup TCP socket\n");
memset(&dist, 0, sizeof(dist));
dist.sin_family = AF_INET;
dist.sin_addr.s_addr = inet_addr(server_ip);
dist.sin_port = htons(server_port);

printf("connecting...\n");
if (connect(socketfd, (struct sockaddr *) &dist, sizeof(dist)) == -1)
exit(1);

printf("send http request\n");
if (send(socketfd, http_request, request_len, 0) != request_len)
exit(1);

printf("receive data\n");
while (1) {
int bytes = 0;
if ((bytes = recv(socketfd, buffer, BUFSIZE-1, 0)) < 1)
break;
buffer[bytes] = '\0';
fprintf(stdout, buffer);
}
fprintf(stdout, "\n");
close(socketfd);
exit(0);
}
==========================================

這只是把網頁原始碼抓下來的簡單程式
如果要抓超連結,還要再去把原始碼存起來然後分析
抓取 會有一點點的苦工
另外如果你有用linux,其實有更方便的方法來抓網頁
可以用用看lynx套件,抓超連結或是原始內容都很方便
還有一點要注意
不是所有網頁抓下來就可以正常觀看的
有些網頁內容格式是UTF-8

和風信使 發表在 痞客邦 PIXNET 留言(0) 人氣()