• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

python 搞代码 4年前 (2022-01-09) 19次浏览 已收录 0个评论

我们在用python进行爬虫时,可能都遇到过有些网页直接请求得到的 HTML 代码里面,并没有我们需要的数据,也就是我们在浏览器中看到的内容。

这就是因为这些信息是通过Ajax加载的,并且通过js渲染生成的。这个时候我们就需要分析这个网页的请求了。

上一篇给大家讲解了什么是Cookie及模拟登录的操作流程,今天给大家带来的是如何分析网页的Ajax请求。

什么是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标签。然后我们刷新网页,往下拉请求。这个时候我们就可以看到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/minisite/article.json?retrieve_type=by_subject&limit=20&offset=18

爬取流程

分析Ajax请求获得每一页的文章url信息;解析每一篇文章,获得需要数据;将获得的数据保存数据库;开启多进程,大量抓取。

开始

我们的工具仍然使用requests请求,BeautifulSoup解析。

首先我们要通过分析Ajax请求,获得所有页的信息,通过对上面对网页的分析,可以得到Ajax加载的json数据的URL地址为:http://www.guokr.com/apis/minisite/article.json本文来源gaodaimacom搞#代%码@网-?retrieve_type=by_subject&limit=20&offset=18


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:面对JS渲染的网页如何分析Ajax请求

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址