免费注册 查看新帖 |

Chinaunix

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

[C] 发布一个单机版的spider,分布式版本还在开发中 [复制链接]

论坛徽章:
1
黑曼巴
日期:2020-02-27 22:54:26
11 [报告]
发表于 2008-06-11 21:24 |只看该作者
原帖由 redor 于 2008-6-11 18:12 发表
依赖库:libevbase http://sbase.googlecode.com/files/libevbase-0.0.14.tar.gz
下载下来的数据压缩存储到一个文件里,可通过meta索引去遍历,这个版本是个demo...
希望有兴趣的跟我一块开发吧,分布式版本目前还 ...



我用了,不错,希望再改进。。。收藏了

论坛徽章:
0
12 [报告]
发表于 2008-06-11 21:30 |只看该作者
我很有兴趣,不知道有没有实力,呵呵

论坛徽章:
0
13 [报告]
发表于 2008-06-12 08:58 |只看该作者
原帖由 heixia108 于 2008-6-11 21:30 发表
我很有兴趣,不知道有没有实力,呵呵



实力都是做的时候才知道...呵呵

论坛徽章:
0
14 [报告]
发表于 2008-06-12 09:10 |只看该作者
https://sirch.svn.sourceforge.net/svnroot/sirch/trunk/crawler/

https://svn.lcuc.org.cn/public/svn-sirch/trunk/libcrawler/

我现在遇到的问题:
1. urlparser也就是LZ所说的从页面里提取出来的URL,我没有做特别详细的URL合法性验证
2. URL hash 列表的重复、权重等带来的效率问题
3. URL那么海量就必然使用pthread,但是如何有效创建有限的threads来应对海量的URL,毕竟去爬取海量的URL是长操作
4. 如何带套(Tor)这样更多地爬取XXX网站

我的初始URL的来源是dmoz和搜狗lib

https://svn.lcuc.org.cn/public/svn-sirch/trunk/util/sirindex.h
https://svn.lcuc.org.cn/public/svn-sirch/trunk/util/sirindex.c

我的索引也存在效率问题,就一直没有往下做了
1. 汉语分词的字典比较小,地名、人名都没有收录
2. 从爬取下来的页面中快速搜索词语效率低下

论坛徽章:
1
双子座
日期:2015-01-04 14:25:06
15 [报告]
发表于 2008-06-12 09:31 |只看该作者
LZ 发贴只发精华贴

论坛徽章:
0
16 [报告]
发表于 2008-06-12 09:46 |只看该作者
原帖由 涩兔子 于 2008-6-12 09:10 发表
https://sirch.svn.sourceforge.net/svnroot/sirch/trunk/crawler/

https://svn.lcuc.org.cn/public/svn-sirch/trunk/libcrawler/

我现在遇到的问题:
1. urlparser也就是LZ所说的从页面里提取出来的URL ...



URL解析一般还是比较容易的,我以前写过HTML,所以对LINK提取还算比较熟悉,
URL hash重复的问题,我建议你使用trie,trie能解决你的重复问题,而且查找速度很快,弊端是比较占内存,如果全部弄成16字节的二进制MD5应该也占不了太大内存.
一般对于多线程下载都需要单线程多连接同时抓取,一般的解决方案非阻塞的事件通知模式, 就是使用libevent 或者自己写epoll或者kqueue的封装,当然你要是有兴趣可以看看我的libevbase 和  libsbase的实现....

我目前的索引遇到的问题是IO分块存储已经效率的平衡问题,目前我正学习一些文件系统的知识,相信学完会对设计这个有很大的帮助的.

另外说说我的倒排索引的设计思路吧,我的倒排设计为单纯的计算模型,分词和摘要被剥离出来,也就是扔进倒排的是词的ID和文档ID还有词的权重...
查询的时候也会传词ID的一个列表进去,可选不通的查询模型,然后获得排序完的文档列表,排序是在文档命中会逐个计算文档的权重后排序,也就是如果要扩展page rank等排序规则的时候可以外接一个计算接口把计算出来的分值传进去就可以了.

论坛徽章:
0
17 [报告]
发表于 2008-06-12 10:27 |只看该作者
我听说目前的spider对JS的处理都不太好,不知道遇到有JS的网页怎么处理?

论坛徽章:
0
18 [报告]
发表于 2008-06-12 11:48 |只看该作者
原帖由 converse 于 2008-6-12 10:27 发表
我听说目前的spider对JS的处理都不太好,不知道遇到有JS的网页怎么处理?



这个比较高级一点吧,需要一个JS的解析引擎,但是JS的数据一般是可以忽略的.

论坛徽章:
0
19 [报告]
发表于 2008-06-12 13:03 |只看该作者
强烈关注
http://lcuc.org.cn/summer_code#comment-2243

1. URL解析,我是用POSIX regex找href=""的值,这样就需要判断值的有效性;当然还有时候还需要join一下parent URL,这个时候不合法的值就会造成join后的URL的爬取变得无意义;不过到底是合法性判断的开销大,还是爬取的开销大,我没有测试数据

2. URL的md5主要是方便cache_to_file,保证文件名的合法性,在URL list里,我还是使用的明文URL

3. 我现在的想法是
a. 把URL list分组
b. 控制pthread stack size

4. 索引中的用自己构造辞典list查找文件(html filter后的)中的词语来构建index的效率,咳,我前阵子google了快速排序,考虑用asm写效率最苛刻的东东,这个我是用测试数据的
https://svn.lcuc.org.cn/public/s ... est/test_sirindex.c
time test_sirindex需要大约7s,很不理想

论坛徽章:
0
20 [报告]
发表于 2008-06-12 13:34 |只看该作者
原帖由 涩兔子 于 2008-6-12 13:03 发表
强烈关注
http://lcuc.org.cn/summer_code#comment-2243

1. URL解析,我是用POSIX regex找href=""的值,这样就需要判断值的有效性;当然还有时候还需要join一下parent URL,这个时候不合法的值就 ...



你好像很喜欢用正则阿...不过我不太建议我的项目里用正则,很多东西都可以自己扫描一次搞定的....
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP