前言
这是python网络爬虫的最后一篇给大家做个总结,且看且珍惜把!
截止到目前, 前几章本书介绍的爬虫技术都应用于一个定制网站,这样可以帮助我们更加专注于学习特定技巧。而在本章中,我们将分析几个真实网站,来看看这些技巧是如何应用的。首先我们使用 Google 演示一个真实的搜索表单,然后是依赖 JavaScript 的网站 Facebook, 接下来是典型的在线商店 Gap,最后是拥有地图接口的宝马官网由于这些都是活跃的网站,因此读者在阅读本书时这些网站存在已经发生变更的风险。不过这样也好,因为这些例子的目的是为了向你展示如何应用前面所学的技术,而不是展示如何抓取指定网站。当你选择运行某个示例时,首先需要检 查网站结构在示例编写后是否发生过改变,以及当前该网站的条款与条件是否禁止了爬虫。
9.1 Google 搜索引擎
根据第4篇文章中 Alexa 的数据, google.com 是全世界最流行的网站之一,而且非常方便的是, 该网站结构简单,易于抓取。
下图所示为 Google 搜索主页使用 Firebug 加载查看表单元素时的界面。

可以看到搜索查询存储在输入参数q当中,然后表单提交到 action 属性设定的search路径。我们可以通过将 test 作为搜索条件提交给表单对其进行测试,此时会跳转到类似https://www.google. com/search?q=test&oq=test&es_sm=93&ie=UTF- 8 的URL中。确切的 URL 取决于你的浏览器和地理位置。此外,还需要注意的是,如果开启了 Google 实时,那么搜索结果会使用 AJAX 执行动态加载,而不再需要提交表单。虽然 URL 中包含了很多参数,但是只有用于查询的参数q是必需的。当URL为https://www.google.com/search?q=test时也能产生相同的结果,如下图 所示 。
搜索结果的结构可以使用Firebug来检查,如下图所示。
从下图中可以看出,搜索结果是以链接的形式出现的,并且其父元素是 class 为”主”的<h3>标签。想要抓取搜索结果,我们可以使用第2篇文章中介绍的css选择器。
到目前为止,我们已经下载得到了 Google的搜索结果&#