首页 新闻 会员 周边

网络蜘蛛问题,大家指教下

0
悬赏园豆:50 [已解决问题] 解决于 2009-10-06 20:14

我想利用利用Lucene.net做个网路蜘蛛。主要想利用Lucene.net创建索引,数据采集的工作自己开发完成。现在有些问题请教大家:

蜘蛛采集的数据存放在数据库中还是存放在哪里,我打算放在数据库中,哪个性能上好些呢?

蜘蛛为什么要下载网页呢?我看每个蜘蛛都有下载文件的功能,但是不清楚为何一定要下载网页呢?边解析html边往数据库中存不行吗?

希望高手赐教。谢谢

问题补充: Lucene.net是没有数据采集的功能,但是蜘蛛只是下载网页吗?创建索引不是蜘蛛干的吗?(这个我不清楚) 那我可不可以请求一个URL后直接就分析html--然后创建索引--必要的信息存放数据库(或略)。这样不就没有下载网页的必要了吗?是不是性能上的问题? 请简单说下蜘蛛工作流程和所需要的功能,谢谢。我加分
131413的主页 131413 | 初学一级 | 园豆:50
提问于:2009-09-30 14:54
< >
分享
最佳答案
0

存入数据库就可以了,一般的蜘蛛没有太大必要实现自己的存储方案,但注意最好不要使用轻量级的数据库产品,吞吐量比较差。

下载网页是必须下的,不下下来怎么分析内容嘛。你的意应该是指下载后的网页数据没必要保存起来吧?是这样的,可以直接对网页代码进行分析,然后将分析后的数据储存起来就行了,没有需要的话就不用保存网页。

通常蜘蛛需要拥有的功能:

漫游:在各个网页间爬行,需保证如无特殊需求时不要重复爬一个页、不要绕在死胡同里出不来。

下载数据:下载爬到的网页源代码,如有需要的话,还可以下载其附属的资源文件,如图片等。

分析与存档:这个功能可以做成委托或事件,由调用者来配置具体的分析方式,并决定如何处理源数据与分析后的数据,这样可以保证蜘蛛的通用性。

 

另外蜘蛛一般都是多线程并行处理的,所以可能还需要一个线程调度程序,用以给每个线程委派任务,并避免冲突;也可以让每个线程彼此独立地自己维护自己的任务,比如将每个线程限定在不同的域名中,让它们只爬自己辖区内的网页,就不会有冲突问题。

收获园豆:25
斯克迪亚 | 老鸟四级 |园豆:4124 | 2009-10-01 21:22
大帅哥~
YJJ | 园豆:200 (初学一级) | 2009-10-21 09:40
其他回答(2)
0

Lucene.net不能做网络蜘蛛。数据应该存放在文件中。因为Lucene.net解析的能转成.txt的文件,如果存在数据库中,就多了转换。下载网页是为以后提取信息准备的。

收获园豆:5
小军人 | 园豆:236 (菜鸟二级) | 2009-10-01 00:27
0

下载HTML是必须的,否则无法分析。但如果你只是想向提取HTML中某些信息存放到数据库,可以不将HTML存储到数据库中而只是将提取出来的信息存储进去。

另外Lucene 没有和数据库关联的功能,你的数据存储到数据库中后需要同步更新Lucene 才行,而且Lucene的DocId 不是唯一的,而只是在段里面是唯一的,这导致你不能用DocId 和数据库做关联,必须用一个另外的唯一性字段,这个字段必须同时存储在Lucene和数据库中,这样做对性能有较大影响。

总之用Lucene 和数据库关联做全文查询很麻烦,效率也不高。Hubble.net 在这方面有很大的优势,10月底左右将推出第一个可以使用的版本。楼主到时候用了就知道那个更好了。

收获园豆:20
eaglet | 园豆:17139 (专家六级) | 2009-10-02 07:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册