【Python3网络爬虫开发实战】6-Ajax数据爬取-2-Ajax分析方法

这里还之前面的微博为例,咱们知道拖动刷新的内容由Ajax加载,并且页面的URL没有变化,那么应该到哪里去查看这些Ajax请求呢?html

1. 查看请求

这里还须要借助浏览器的开发者工具,下面以Chrome浏览器为例来介绍。浏览器

首先,用Chrome浏览器打开微博的连接m.weibo.cn/u/283067847…,随后在页面中点击鼠标右键,从弹出的快捷菜单中选择“检查”选项,此时便会弹出开发者工具,如图6-2所示:服务器

图6-2 开发者工具微信

此时在Elements选项卡中便会观察到网页的源代码,右侧即是节点的样式。网络

不过这不是咱们想要寻找的内容。切换到Network选项卡,随后从新刷新页面,能够发现这里出现了很是多的条目,如图6-3所示。工具

图6-3 Network面板结果ui

前面也提到过,这里其实就是在页面加载过程当中浏览器与服务器之间发送请求和接收响应的全部记录。3d

Ajax其实有其特殊的请求类型,它叫做xhr。在图6-3中,咱们能够发现一个名称以getIndex开头的请求,其Type为xhr,这就是一个Ajax请求。用鼠标点击这个请求,能够查看这个请求的详细信息,如图6-4所示。code

图6-4 详细信息cdn

在右侧能够观察到其Request Headers、URL和Response Headers等信息。其中Request Headers中有一个信息为X-Requested-With:XMLHttpRequest,这就标记了此请求是Ajax请求,如图6-5所示。

图6-5 详细信息

随后点击一下Preview,便可看到响应的内容,它是JSON格式的。这里Chrome为咱们自动作了解析,点击箭头便可展开和收起相应内容,如图6-6所示。

图6-6 JSON结果

观察能够发现,这里的返回结果是个人我的信息,如昵称、简介、头像等,这也是用来渲染我的主页所使用的数据。JavaScript接收到这些数据以后,再执行相应的渲染方法,整个页面就渲染出来了。

另外,也能够切换到Response选项卡,从中观察到真实的返回数据,如图6-7所示。

图6-7 Response内容

接下来,切回到第一个请求,观察一下它的Response是什么,如图6-8所示。

图6-8 Response内容

这是最原始的连接m.weibo.cn/u/283067847…返回的结果,其代码只有不到50行,结构也很是简单,只是执行了一些JavaScript。

因此说,咱们看到的微博页面的真实数据并非最原始的页面返回的,而是后来执行JavaScript后再次向后台发送了Ajax请求,浏览器拿到数据后再进一步渲染出来的。

2. 过滤请求

接下来,再利用Chrome开发者工具的筛选功能筛选出全部的Ajax请求。在请求的上方有一层筛选栏,直接点击XHR,此时在下方显示的全部请求便都是Ajax请求了,如图6-9所示。

图6-9 Ajax请求

接下来,不断滑动页面,能够看到页面底部有一条条新的微博被刷出,而开发者工具下方也一个个地出现Ajax请求,这样咱们就能够捕获到全部的Ajax请求了。

随意点开一个条目,均可以清楚地看到其Request URL、Request Headers、Response Headers、Response Body等内容,此时想要模拟请求和提取就很是简单了。

图6-10所示的内容即是个人某一页微博的列表信息。

图6-10 微博列表信息

到如今为止,咱们已经能够分析出来Ajax请求的一些详细信息了,接下来只须要用程序模拟这些Ajax请求,就能够轻松提取咱们所须要的信息了。

在下一节中,咱们用Python实现Ajax请求的模拟,从而实现数据的抓取。


本资源首发于崔庆才的我的博客静觅: Python3网络爬虫开发实战教程 | 静觅

如想了解更多爬虫资讯,请关注个人我的微信公众号:进击的Coder

weixin.qq.com/r/5zsjOyvEZ… (二维码自动识别)

相关文章
相关标签/搜索