限时优惠
查看: 561|回复: 0

面对JS渲染的网页如何分析Ajax请求

[复制链接]
发表于 2022-4-16 23:50:51 | 显示全部楼层 |阅读模式
什么是Ajax
AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。
AJAX = 异步 JavaScript和XML(标准通用标记语言的子集)。
AJAX 是一种用于创建快速动态网页的技术。
AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
简单的说就是网页加载,浏览器地址栏的网址并没有变,是javascript异步加载的网页,应该是ajax。AJAX一般是通过XMLHttpRequest 对象接口发送请求的,XMLHttpRequest 一般被缩写为 XHR。
分析果壳网站点
我们目标网站就以果壳网来进行分析。
我们可以看到这个网页并没有翻页按钮,而当我们一直往下拉请求,网页会自动的给我们加载出更多内容。但是,当我们观察网页url时,发现它并没有随着网页的加载请求而变化。而当我们直接请求这个url时,显然我们只能获得到第一页的html内容。

那我们要怎么获得所有页的数据呢?
我们在Chrome中打开开发者工具(F12)。我们点击Network,点击XHR标签---NAME中的链接查看头部。然后我们刷新网页,往下拉请求。这个时候我们就可以看到XHR标签,在网页每一次加载的时候就会跳出一个请求。
我们点击第一个请求,可以看到他的参数:
retrieve_type:by_subjectlimit:20offset:18-:1500265766286
在点击第二个请求,参数如下:
retrieve_type:by_subjectlimit:20offset:38-:1500265766287
limit参数是网页每一页限制加载的文章数,offset就是页数了。接着往下看,我们会发现每一个请求的offset参数都会加 20。
我们接着看每一个请求的响应内容,这是一个就是格式的数据。我们点开result键,可以看到一个 20 篇文章的数据信息。这样我们就成功找到我们需要的信息位置了,我们可以在请求头中看到存放json数据的url地址。http://www.guokr.com/apis/minisi ... 0&offset=18

爬取流程
分析Ajax请求获得每一页的文章url信息;解析每一篇文章,获得需要数据;将获得的数据保存数据库;开启多进程,大量抓取。
开始
我们的工具仍然使用requests请求,BeautifulSoup解析。
首先我们要通过分析Ajax请求,获得所有页的信息,通过对上面对网页的分析,可以得到Ajax加载的json数据的URL地址为:http://www.guokr.com/apis/minisi ... 0&offset=18

谁来看过此贴
此贴被TA们浏览了561次
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫一扫下载app
关注我们,扫描左边二维码,下载APP更好的体验,你还在等什么?
快速回复 返回顶部 返回列表