|
我们在浏览网页的时候会发现,每个网站都不一样,有的是静态的,有的是动态的。然而动态网页在进行优化时是有影响的。动态网页是响应用户使用行为时自动生成的网页,在用户发出请求之前,动态网页是不存在的。动态网页给网络爬虫带来了麻烦。
举例来说,众所周知的搜索引擎的检索结果页面就是动态网页。搜索引擎收到用户提交的查询请求后,会搜索它的数据库,查找相关的地址,并生成一个结果页面。这个页面会整合查询结果及其他信息,如搜索引擎标识和广告。它生成的网页是一个真实的网页,有惟一的URL,但是,如果爬虫访问搜索引擎站点,它不会发现该网页,因为该网页是响应查询请求生成的,响应结束后,立即被清除。
从该例可以看出,在网络上有很多有用信息。但不是以静态网页形式呈现的。这些网页必须向数据库发出一个请求才能访问,包括一些图书馆目录、商业产品数据库以及数字图书馆。这些通常只是被称作“不可见的网络”或者“深度网络”的一部分,前一个概念已经由Sherman和Price普及。爬虫数据的使用者必须接受这一不可避免的局限性,即网络爬虫无法找到大量不同类型的动态网页。
有趣的是,一些运营网络数据库的信息提供商也拥有大量静态网页,甚至是数据库的关键部分,因此,搜索引擎能完全地索引这些页面。对链接分析而言,未将爬虫数据建库已不是问题,但有一个相关问题值得注意,即有些网站以动态网页为核心,而不是以数据库为核心。有一些网络技术可用于自动生成动态网页,包括PHP技术和ASP技术。
动态网页曾经是爬虫的一大难题。设计爬虫时,通常都回避动态网页。识别动态网页时,只需要看URL中是否出现问号,含问号的就是动态网页。忽略动态网页是因为它们容易造成蜘蛛陷阱。蜘蛛陷阱理论上是一个无限的网页集合,而蜘蛛永远不能完整地遍历这个集合。在线日历就是一个容易被忽略的蜘蛛陷阱,它生成的动态网页中可以标上任何日期,并包含指向后一天网页的链接。一个爬虫从这个日历中找到一个网页后,便会无止境地请求后一天的网页。
商业搜索引擎的爬虫通常回避这些带问号的URL,因为这些URL可能会导致蜘蛛陷阱。Google已经放宽了对这些站点的限制,Google爬虫似乎有另一种避免蜘蛛陷阱的方法。举例来说,它可能沿着指向带问号URL的链接爬行,但不会爬取带问号的URL,这样便可以跳出蜘蛛陷阱的递归循环。链接分析研究者应当注意,研究型的网络爬虫不能遍历含动态网页的站点,或者只能遍历深度较浅的站点。商业搜索引擎的爬虫也是如此。在使用爬虫的时候,应当公开所使用的参数,以便其他研究者能判断这些参数对结果的影响。 |
|