网络爬虫面临的挑战 之 链接构造
爬虫 与 反爬虫 就好像是安全领域的破解与反破解一样,相互矛盾,相互克制,同时也相互促进。 网站的构建技术从简单的 静态网站 发展到 动态网站 ,信息的传递从用户 单向接收 发展到 双向交互 ,内容的产生从站长 集中生成 发展到 全民参与生成 。 Web技术的发展对 网络爬虫 构成了极大的 挑战 ,我们以 Nutch 为例来说明难在哪里: 1、静态网站( 简单 ) 2、动态网站(无陷阱)( 难 ) 3、动态网站(有陷阱)( 非常 难 ) 对于静态网站,页面数量有限,无论页面之间如何构造链接,无论页面内容是什么,都能在一个有限的时间内抓取完毕。对于静态网站来说,我们假设网站无陷阱(不会有程序来动态生成无穷无尽的静态页面),内容质量高(不会为了提高搜索结果排名进行关键词堆砌,不会大量静态页面都是一样的内容或近似的内容等)。这样的静态网站,就是爬虫理想的抓取对象! 对于 无陷阱 的动态网站,用户需要和服务器交互,服务器根据用户指定的 参数 动态返回 结果 。爬虫要抓取这样的网站,就需要 枚举完所有可用的参数 ,而很多时候,爬虫是无法枚举完所有可用的参数的。 假如我们要想抓取淘宝上面的所有商品,我们通过他的 搜索入口 去抓是无法抓完的,因为我们无法枚举所有的商品;那么我们还可以通过 分类栏目 作为入口,一页一页地往后抓,这虽然可行,但是无法抓全,淘宝会对 分页 进行 限制 ,如100页