返回介绍

5.1 动态网页示例

发布于 2024-02-05 23:37:18 字数 1700 浏览 0 评论 0 收藏 0

让我们来看一个动态网页的例子。示例网站有一个搜索表单,可以通过http://example.webscraping.com/search 进行访问,该页面用于查询国家。比如说,我们想要查找所有起始字母为A的国家,其搜索结果页面如图5.1所示。

图5.1

如果我们右键单击结果部分,使用Firebug查看元素(参见第2章),可以发现结果被存储在ID为“result”的div 元素中,如图5.2所示。

让我们尝试使用lxml 模块抽取这些结果,这里用到的知识在第2章和第3章的Downloader 类中都已经介绍过了。

>>> import lxml.html
>>> from downloader import Downloader
>>> D = Downloader()
>>> html = D('http://example.webscraping.com/search')
>>> tree = lxml.html.fromstring(html)
>>> tree.cssselect('div#results a')
 []

图5.2

这个示例爬虫在抽取结果时失败了。检查网页源代码可以帮助我们了解抽取操作为什么会失败。在源代码中,可以发现我们准备抓取的div 元素实际上是空的,如下所示。

<div id="results">
</div>

而Firebug显示给我们的却是网页的当前状态,也就是使用JavaScript动态加载完搜索结果之后的网页。下一节中,我们将使用Firebug的另一个功能来了解这些结果是如何加载的。

什么是AJAX

AJAX是指异步JavaScript和XML(Asynchronous JavaScript and XML),于2005年引入,描述了一种跨浏览器动态生成Web应用内容的功能。更重要的是,`XMLHttpRequest`—这个最初微软为ActiveX实现的JavaScript对象,目前已经得到大多数浏览器的支持。该技术允许JavaScript创建到远程服务器的HTTP请求并获得响应,也就是说Web应用就可以传输和接收数据。而传统的客户端与服务端交互方式则是刷新整个网页,这种方式的用户体验比较差,并且在只需传输少量数据时会造成带宽浪费。
Google的Gmail和Google地图是动态Web应用的早期实验者,也对AJAX成为主流起到了重要帮助。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文