首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

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行,过滤指定的网页不存在时产生的各种错误信息。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论