以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)]应该是最关键的了。