2013-05-19 25 views
1

我有一個關於網絡機器人應用程序的問題。如何解決不同的網址轉發到網絡機器人應用程序中的同一頁面

網址:http://www.domain.com/path?id=1

網址B:http://www.domain.com/path?id=1&sessionid=XXXXXX

有兩個網址,並轉發給同page.robot的應用程序下載頁面的兩倍。

在我的機器人應用程序中,兩個URL轉換爲md5值來檢查訪問。但url字符串被改變了,所以md5的值也改變了。被訪問的緩存不能命中。

有什麼更好的解決辦法?

+0

將散列之前的參數移除到md5? –

+0

@ThomasJungblut - 也許'id = 2'會導致另一個頁面。 –

+0

你正在執行它...? C#可以爲您提供客戶端重定向到的最後一個URI。 – Novak

回答

0

如果我是你,我會使用一種算法來計算內容的相似度,如果它們與配置的閾值類似,請將它們視爲同一文檔。檢查絕對平等(如MD5SUM)將不起作用,因爲動態內容(如時間戳)會破壞此類方案。

使用文檔相似性是網絡爬行中常用的一種方法,可防止機器人反覆下載基本相同的內容。

Levenshtein Distance這樣一個非常簡單的相似算法可以完成這項工作,但是像cosine similarity這樣的東西會更適合這個。

+0

謝謝你的回答。我受到啓發。但是當我計算頁面內容(id = 1,id = 1和sessionid = xxx)時,機器人已經下載了頁面。內容哈希md5值絕對平等,也許我應該添加一個圖層來收集URL文件和獨特的URL(我認爲是最短的網址)的引用?當新的網址到來時,請檢查網址和多個網址參考唯一網址。但像sessionid = xxx這樣的參數可能會無休止地改變。 –

+0

@ gao.yang:我想你想使用實際的頁面內容(而不是url)來計算文檔的相似度。就像實際的html和內容一樣。這是昂貴的,但鑑於網絡如此混亂,我想不到一種可以在不使用實際原始內容的情況下處理這種情況的方式。 –

相關問題