4.4 案例研究:使用WinSock抓取网页
这个案例主要是创建一个基本的网页抓取程序,程序比较简单,主要功能是抓取Web页面,并将内容显示在命令提示符窗口中。
这个程序具有3个参数,第1个参数表示服务器的IP地址,第2个参数为要访问的端口号,最后一个参数为所需的文件名。除IP地址是必需的以外,端口号和文件名都是可选的,如果没有指定,则端口为默认的80号端口,文件名为服务器的主页(见例4-2)。这个程序还应过滤掉所有的错误信息,仅显示Web页的内容。
例4-2 通用网页抓取程序
1 #include <stdio.h>
2 #include "hack.h"
3
4 int main(int argc, char *argv[])
5 {
6 int port = 80;
7 char* targetip;
8
9 if (argc < 2)
10 {
11 printf("WebGrab usage:\r\n");
12 printf(" %s <TargetIP> [port]\r\n", argv[0]);
13 return(0);
14 }
15
16 targetip = argv[1];
17 char* output;
18
19 if (argc >= 3)
20 {
21 port = atoi(argv[2]);
22 }
23
24 if (argc >= 4)
25 {
26 output = get_http(targetip, port, argv[3]);
27 }
28 else
29 {
30 output = get_http(targetip, port, "/");
31 }
32 if( is_string_in("Error 40", output ) ||
33 is_string_in("302 Object moved", output ) ||
34 is_string_in("404 Not Found", output ) ||
35 is_string_in("404 Object Not Found", output ))
36 {
37 printf("Page does not exist!");
38 }
39 else
40 {
41 printf("%s", output);
42 }
43 return(0);
44 }
分析
● 第2行,引用前面已经定义的头文件(见例4-5)。
● 第32行到第35行,过滤指定的网页不存在时产生的各种错误信息。






