029. (7.30) Ajax数据爬取

Ajax数据爬取


我们在用 requests 抓取页面的时候,得到的结果可能和在浏览器中看到的不一样:在浏览器中可以看到正常显示的页面数据,但是使用 requests 得到的结果并没有。这是因为 requests 获取的都是原始的 HTML 文档,而 浏览器中的页面则是经过 JavaScript 处理数据后生成的结果,这些数据的来源有多种,可能是通过 Ajax 加载的,可能是包含在 HTML 文档中的,也可能是经过 JavaScript 和特定算法计算后生成的。

对于 Ajax 加载(即异步的 JavaScript XML,非编程语言),数据加载是一种异步加载方式,原始的页面最初不会包含某些数据,原始页面加载完后,会再向服务器请求某个接口获取数据,然后数据才被处理从而呈现到网页上,这其实就是发送了一个 Ajax 请求

数据通过 Ajax 统一加载后再呈现出来,这样在 Web 开发上可以做到前后端分离,同时降低服务器直接渲染页面带来的压力。Ajax 页面,是 Web 发展的趋势。

所以,当遇到 Ajax 页面时,需要分析网页后台接口发送的 Ajax 请求。如果可以用 requests 来模拟 Ajax 请求,即可成功爬取数据。

Ajax 分析方法

因为我们要模拟 Ajax 请求,所以需要了解哪里可以看到这些后台 Ajax 操作,了解它到底是怎么发迭的,发了什么参数。

进入浏览器开发者工具中的 Network 选项卡,这里其实就是在页面加载过程中浏览器与服务器之间发送请求和接收响应的所有记录。

Ajax 有其特殊的请求类型 ,它叫作 xhr 。

点开一个 Ajax 请求,其中 Request Headers 中有个信息为 X-Requested-With:XMLHttpRequest ,这就标记了此请求是 Ajax 请求。 点击一下 Preview ,即可看到响应的内容,它是 JSON 格式的。 而 Response 选项卡,从中可观察到真实的返回数据。

因为可以清楚地看到其 Request URL 、Request Headers 、Response Headers 和 Response Body ,此时想要模拟请求和提取就变得简单了。

最后,从 Ajax 请求的新页面提取信息,利用 json 读取数据是常用方法。

实例列举:爬取新浪微博内容、爬取QQ音乐歌曲……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值