問題:
我想利用利用Lucene.net做個(gè)網(wǎng)路蜘蛛。主要想利用Lucene.net創(chuàng)建索引,數(shù)據(jù)采集的工作自己開發(fā)完成。現(xiàn)在有些問題請(qǐng)教大家:
蜘蛛采集的數(shù)據(jù)存放在數(shù)據(jù)庫(kù)中還是存放在哪里,我打算放在數(shù)據(jù)庫(kù)中,哪個(gè)性能上好些呢?
蜘蛛為什么要下載網(wǎng)頁(yè)呢?我看每個(gè)蜘蛛都有下載文件的功能,但是不清楚為何一定要下載網(wǎng)頁(yè)呢?邊解析html邊往數(shù)據(jù)庫(kù)中存不行嗎?
希望高手賜教。謝謝
問題補(bǔ)充:Lucene.net是沒有數(shù)據(jù)采集的功能,但是蜘蛛只是下載網(wǎng)頁(yè)嗎?創(chuàng)建索引不是蜘蛛干的嗎?(這個(gè)我不清楚)
那我可不可以請(qǐng)求一個(gè)URL后直接就分析html--然后創(chuàng)建索引--必要的信息存放數(shù)據(jù)庫(kù)(或略)。這樣不就沒有下載網(wǎng)頁(yè)的必要了嗎?是不是性能上的問題?
請(qǐng)簡(jiǎn)單說下蜘蛛工作流程和所需要的功能,謝謝。我加分
回答:
存入數(shù)據(jù)庫(kù)就可以了,一般的蜘蛛沒有太大必要實(shí)現(xiàn)自己的存儲(chǔ)方案,但注意最好不要使用輕量級(jí)的數(shù)據(jù)庫(kù)產(chǎn)品,吞吐量比較差。
下載網(wǎng)頁(yè)是必須下的,不下下來怎么分析內(nèi)容嘛。你的意應(yīng)該是指下載后的網(wǎng)頁(yè)數(shù)據(jù)沒必要保存起來吧?是這樣的,可以直接對(duì)網(wǎng)頁(yè)代碼進(jìn)行分析,然后將分析后的數(shù)據(jù)儲(chǔ)存起來就行了,沒有需要的話就不用保存網(wǎng)頁(yè)。
通常蜘蛛需要擁有的功能:
漫游:在各個(gè)網(wǎng)頁(yè)間爬行,需保證如無特殊需求時(shí)不要重復(fù)爬一個(gè)頁(yè)、不要繞在死胡同里出不來。
下載數(shù)據(jù):下載爬到的網(wǎng)頁(yè)源代碼,如有需要的話,還可以下載其附屬的資源文件,如圖片等。
分析與存檔:這個(gè)功能可以做成委托或事件,由調(diào)用者來配置具體的分析方式,并決定如何處理源數(shù)據(jù)與分析后的數(shù)據(jù),這樣可以保證蜘蛛的通用性。
另外蜘蛛一般都是多線程并行處理的,所以可能還需要一個(gè)線程調(diào)度程序,用以給每個(gè)線程委派任務(wù),并避免沖突;也可以讓每個(gè)線程彼此獨(dú)立地自己維護(hù)自己的任務(wù),比如將每個(gè)線程限定在不同的域名中,讓它們只爬自己轄區(qū)內(nèi)的網(wǎng)頁(yè),就不會(huì)有沖突問題。