Spider抓取一个网页后会优先把网页中的URL提取出来,同时记录和计算URL的形式、位置、锚文本、当前页所赋予的权值等信息,然后把这些URL合并到抓取队列中,并根据每个URL所附有的总权值等信息进行抓取队列内排序。Spider就是根据这个不断变化顺序的URL队列来抓取网页内容的,而并不是从一个页面沿着链接爬到另一个页面抓取。因此严格来说Spider是不会“爬”的,站长在网站日志中也可以看到Spider对网站的访问并没有refer,都是直接访问。
以往一般会把Spider抓取网页的过程形象地描述为搜索引擎放出Spider,然后这个Spider就沿着链接不断地抓取网页,这只是一种形象的比喻而已。比如以前描述类似万年历的“蜘蛛陷阱”时,会有这样的描述“蜘蛛进入到蜘蛛陷阱后会一层一层地无限抓取下去”“蜘蛛进去就出不来了”“把蜘蛛永远留在站内了”,这类描述给大家传达的意思都是Spider沿着链接从一个网页到另一个网页的爬行过程。其实按照实际的Spider设计,“蜘蛛陷阱”并不是把Spider留在了站内“出不去了”,而是如果不加控制的话,Spider会在“蜘蛛陷阱”的网页集合中收集到无数无意义的URL并放入抓取队列中,这些URL对应的网页并没有实际有意义的内容,从而会造成Spider抓取资源的浪费。所谓的“把蜘蛛强制留在站内”对应实际的Spider抓取机制,应该是如果Spider不加限制地收集URL,就需要无限制地抓取“蜘蛛陷阱”内的URL,然而“蜘蛛陷阱”内的URL可能是无限的,并不是“一个蜘蛛掉陷阱里出不来了”。
也就是说,Spider对网页的抓取是单次访问抓取,每访问一个页面都会把页面上的信息抓取回来,而不是把一个“小蜘蛛”派到网站上,然后沿着网站的链接爬行抓取大量的页面之后再返回给服务器。