免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: zhoulifa
打印 上一主题 下一主题

[原创] 用 C 语言编写一个网络蜘蛛来搜索网上出现的电子邮件地址 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2006-09-06 18:49 |只看该作者
把你的环境、代码和操作过程贴出来看看吧

我这里是:gcc 版本 4.0.3 (Ubuntu 4.0.3-1ubuntu5)

论坛徽章:
0
22 [报告]
发表于 2006-09-06 19:01 |只看该作者
gcc version 3.2 20020903 (Red Hat Linux 8.0 3.2-7)
[root@ root]# cat /etc/redhat-release
Red Hat Linux release 8.0 (Psyche)

gcc mailaddrsearch.c -o mailsearcher

[ 本帖最后由 GNM 于 2006-9-6 19:05 编辑 ]

论坛徽章:
0
23 [报告]
发表于 2006-09-06 19:51 |只看该作者
aspseek

论坛徽章:
0
24 [报告]
发表于 2006-09-06 20:29 |只看该作者

可以利用现有的爬虫做啊

可以在开源的爬虫,例如larbin的基础上稍作修改就能达到这个目的啊

larbin是C++写的,效率非常高。

论坛徽章:
0
25 [报告]
发表于 2006-09-07 00:41 |只看该作者
大概看了一下,有点感想说出来大家讨论一下.
楼主的代码写的不规范啊.比如char* s=0;这样的CODE...
还有,在void Rstrchr(char * s, int x, char ** d)里好象有个BUG,s的最后一个字符不会被搜索的...

论坛徽章:
0
26 [报告]
发表于 2006-09-07 09:01 |只看该作者
原帖由 poper 于 2006-9-7 00:41 发表
大概看了一下,有点感想说出来大家讨论一下.
楼主的代码写的不规范啊.比如char* s=0;这样的CODE...
还有,在void Rstrchr(char * s, int x, char ** d)里好象有个BUG,s的最后一个字符不会被搜索的...


规范这东西仁者见仁了,习惯就好,何况规范是人自己定的。我不太遵循
依poper高见,定义指针初始化为空值如何写比较规范呢?贴出来让咱学习学习

另外Rstrchr经测试无BUG

  1. /* 这是测试代码 */
  2. #include <string.h>
  3. #include <stdio.h>

  4. void Rstrchr(char * s, int x, char ** d)
  5. {
  6.         int len = strlen(s) - 1;
  7.         while(len >= 0)        {
  8.                 if(x == s[len]) {(*d) = s + len; return;}
  9.                 len--;
  10.         }
  11.         (*d) = 0;
  12. }

  13. int main(int argc, char ** argv)
  14. {
  15.   char * p = 0;
  16.   Rstrchr(argv[1], 'a', &p);
  17.   if(p) printf("%s\n", p);
  18.   return 0;
  19. }
复制代码

/* 这是测试运行结果
test@local:/source/example/c$ gcc rstrchr.c
test@local:/source/example/c$ ./a.out wehasdf
asdf
test@local:/source/example/c$ ./a.out asdf
asdf
test@local:/source/example/c$ ./a.out weha
a
test@local:/source/example/c$ ./a.out wehsdf
*/

无论字符a是在字符串的哪个位置都是可以正常被搜索出来的
能不把你那里的测试结果贴出来?

论坛徽章:
0
27 [报告]
发表于 2006-09-07 10:52 |只看该作者
楼主的程序还是dfs过程, 如果
./mailsearcher A B
而A下有C,D; B下有E,F, 如果递归不加限制理论上E,F将得不到处理, 不知楼主是否同意
不过楼主得程序还是很清楚地说明了网络爬虫的工作原理和过程

论坛徽章:
0
28 [报告]
发表于 2006-09-07 12:28 |只看该作者
程序运行也有问题(as4上编译)
[root@test09.news.sina ~]# ./spdir http://bn.sina.com.cn/pv/index.html
GetHost error from '蜜窨僳窨'

论坛徽章:
0
29 [报告]
发表于 2006-09-07 12:30 |只看该作者
原帖由 Michaelgs 于 2006-9-7 10:52 发表
楼主的程序还是dfs过程, 如果
./mailsearcher A B
而A下有C,D; B下有E,F, 如果递归不加限制理论上E,F将得不到处理, 不知楼主是否同意
不过楼主得程序还是很清楚地说明了网络爬虫的工作原理和过程


同意,这个递归过程确实如Michaelgs所说存在这样的问题,现在程序就是一个不会终止永远运行的状态,需要用搜索深度控制才可以,Michaelgs高手

清楚地说明了网络爬虫的工作原理和过程 -- 这是我本意了,没有把这个代码做成一个完美可用的程序主要是因为没时间静下来做,惭愧

论坛徽章:
0
30 [报告]
发表于 2006-09-07 12:37 |只看该作者
原帖由 GNM 于 2006-9-6 19:01 发表
gcc version 3.2 20020903 (Red Hat Linux 8.0 3.2-7)
[root@ root]# cat /etc/redhat-release
Red Hat Linux release 8.0 (Psyche)

gcc mailaddrsearch.c -o mailsearcher


应该没问题,你编译用这个命令:
gcc mailaddrsearch.c -o mailsearcher -Wall -g
看有什么提示没
或者你用gdb跟踪一下看为何host那个指针内容不是需要的了

我这个代码只是为了展示原理,所以可能有各方面考虑不周,调试应该可以找出问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP