ad

学习《Python网络爬虫 从入门到精通》_掌握爬虫的精髓_4.2 抓取 AJAX 数据

网友投稿 132 2023-11-13

【摘要】 本书摘自《Python网络爬虫 从入门到精通》一书中第4章,第2节,吕云翔、张扬和韩延刚等编著。

4.2 抓取 AJAX 数据

4.2.1 分析数据

网页使用 JavaScript 的第一种模式就是获取 AJAX 数据并在网页中加载,这实际上是一 个“嵌入”的过程,借助这种方式,不需要一个单独的页面请求就可以加载新的数据,这无 论是对网站开发者还是对浏览网站的用户来说都是更好的体验。这个概念与“动态 HTML” 非常接近。动态 HTML 一般指通过客户端语言来动态改变网页 HTML 元素的方式。很显 然,这里的“客户端语言”几乎是 “JavaScript” 的同义词,而“改变 HTML 元素”本身就 意味着对新请求数据的加载。在上一节末看到的知乎首页的例子,实际上就是一种非常典型 且综合性的动态 HTML, 不仅网页中的文本数据是通过JavaScript 加载的(即 AJAX), 而且 网页中的各类元素(比如

元素)也是通过 JavaScript 代码来生成并最终呈现给用 户的。在这一小节先考虑最单纯的 AJAX 数据抓取,暂时不考虑那些复杂的页面变化(直观 地说,就是各类动画加载效果)。这里可以以携程网的酒店详情页面为例,完成一次对 AJAX 数据的逆向工程。

具体地说,网页中的 AJAX 应用过程一般可以简单地归结为一个“发送请求”“获得数 据”“显示元素”的流程。在第一步“发送请求”时,客户端主要借助了一个所谓的 “XMLHttpRequest” 对象。使用Python 发送请求时的程序语句是这样的:

import requests

res =requests.get('url')

#之后发出请求

学习《Python网络爬虫 从入门到精通》_掌握爬虫的精髓_4.2 抓取 AJAX 数据

而浏览器使用 XMLHttpRequest 来发起请求也是类似的,它使用 JavaScript 语言而不是 Python 语言。对于 AJAX 而言,从“发送请求”到“获得数据”的过程当然不止两行代码么简单,最终,浏览器在 XMLHttpRequest 的 responseText 属性中获取响应内容。常见的响 应内容包括HTML 文本、JSON 数据等(见图4-4)。

【提示】 对 XMLHttpRequest 的定义可以参考 Mozilla ( 一 个源于 Netscape 公司的软件 社区组织,旗下软件包括著名的 Firefox ( 火 狐 ) 浏 览 器 ) 给 出 的 说 明 ,“XMLHtpReques t 是一个 API, 它为客户端提供了在客户端和服务器之间传输数据的功能。它提供了一个通过 URL 来获取数据的简单方式,并且不会使整个页面刷新。”

之 后 ,JavaScript 将根据获取到的响应内容来改变网页 HTML 内容,使得“网页源代 码”真正变为开发者在开发者模式中看到的实时网页 HTML 代码。这个“显示元素”的过 程中,第一步就是 JavaScript 进行 DOM 操作(即改变网页文档的操作),之后浏览器完成对 新加载内容的渲染,开发者就看到了最终的网页效果。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:实战之路《Excel 数据处理与分析实战宝典_第2版》_1.1.1 Excel 表格中的对象
下一篇:打开《Python 可视化数据分析》_学会挖掘大数据的价值_3.1.3 死循环
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×