以Google和百度代表的搜索引擎都嚴重依靠爬蟲,因此我還要花大量的篇幅來討論爬蟲(機器人)的一些特點。在下一代的搜索引擎設計裏,將盡量避免出現爬蟲,這樣將會避免現在Google類搜索引擎設計上的嚴重缺陷。
5】爬蟲喜歡什麽?
1]從數量上看,一個網頁的大小如果超過150K,基本上超出部分將不會被爬蟲吃到。
2]從文件類型上看,Html>cgi>php>asp/jsp。爬蟲對不同的flavour有不同的偏好,如果一個網頁嵌入過多的jsp/asp,爬蟲將不會進行觸發。正如cgi相對容易觸發一樣,越靜態的界麵,爬蟲越喜歡。
3]從葉麵聯接上看,如果一個葉麵上有超過100個以上的連接出去,這個葉麵重要度也會被大大的降低。
4]url 深度越深,爬蟲越不易爬到。
因此,對於老式的搜索引擎(上一代搜索引擎)而言,采用[1]靜態html葉麵,[2]葉麵盡量控製在50K以內(文字),[3]單個葉麵內聯接不要超過50個,[4]Url要短小,盡量采用2級域名而不是延伸Url。
6】爬蟲的致命缺陷/robot feed program
因為爬蟲在抓葉麵的時候,同時攜帶了 HTTP-AGENT的標簽,例如前麵的例子:
crawler11.googlebot.com - - [08/Jan/2004:04:04:54 -0600] "GET /blog/archives/000010.html HTTP/1.0" 200 8953 "-" "Googlebot/2.1 (+http://www.googlebot.com/bot.html)"
這裏"Googlebot/2.1 (+http://www.googlebot.com/bot.html)" 就是HTTP-AGENT標簽。
根據這個標簽可以黑客可以很容易欺騙爬蟲,導致爬蟲抓到的網頁不具有真實性。具體做法如下:
當爬蟲向httpd server send a request的時候,httpd嵌入的模塊(黑客模塊,我自己命名叫 robot feed program)檢測http-AGENT是否是搜索引擎的爬蟲,如果不是,就將請求轉交正常的httpd來應答,如果是來自爬蟲,那麽就將已經準備好的另外一個比較Search friendly的葉麵送給爬蟲。
爬蟲歡天喜地的回去了,卻不知道得到的卻是假葉麵。
采用本方法進行一定程度上的欺騙,對於搜索有無以輪比的優越性,因為通常的網頁的[網頁信噪比(Significant)]都很低,而且裏麵包括了很多沒有用處的詞語,這些詞語全是背景項,幾乎永遠不會被搜索到。因此設計一個良好算法,提高網頁的[網頁信噪比(Significant)]應該是最關鍵的了。