Python3爬虫中关于Ajax分析方法的总结


Posted in Python onJuly 10, 2020

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

1. 查看请求

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

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

Python3爬虫中关于Ajax分析方法的总结

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

不过这不是我们想要寻找的内容。切换到Network选项卡,随后重新刷新页面,可以发现这里出现了非常多的条目,如图6-3所示。

Python3爬虫中关于Ajax分析方法的总结

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

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

Python3爬虫中关于Ajax分析方法的总结

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

Python3爬虫中关于Ajax分析方法的总结

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

Python3爬虫中关于Ajax分析方法的总结

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

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

Python3爬虫中关于Ajax分析方法的总结

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

Python3爬虫中关于Ajax分析方法的总结

这是最原始的链接https://m.weibo.cn/u/2830678474返回的结果,其代码只有不到50行,结构也非常简单,只是执行了一些JavaScript。

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

2. 过滤请求

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

Python3爬虫中关于Ajax分析方法的总结

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

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

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

Python3爬虫中关于Ajax分析方法的总结

到现在为止,我们已经可以分析出来Ajax请求的一些详细信息了,接下来只需要用程序模拟这些Ajax请求,就可以轻松提取我们所需要的信息了。

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

以上就是Python3爬虫中关于Ajax分析方法的总结的详细内容,更多关于Python3爬虫里Ajax分析方法的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python中文编码那些事
Jun 25 Python
深入理解Python中装饰器的用法
Jun 28 Python
python简单线程和协程学习心得(分享)
Jun 14 Python
Python使用修饰器执行函数的参数检查功能示例
Sep 26 Python
python交互模式下输入换行/输入多行命令的方法
Jul 02 Python
使用pycharm在本地开发并实时同步到服务器
Aug 02 Python
下载官网python并安装的步骤详解
Oct 12 Python
Python Django form 组件动态从数据库取choices数据实例
May 19 Python
python 代码运行时间获取方式详解
Sep 18 Python
Python urllib request模块发送请求实现过程解析
Dec 10 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
Dec 28 Python
python实现高效的遗传算法
Apr 07 Python
Python3爬虫中Ajax的用法
Jul 10 #Python
Python3爬虫中Selenium的用法详解
Jul 10 #Python
Python3爬虫中Splash的知识总结
Jul 10 #Python
Python3爬虫里关于Splash负载均衡配置详解
Jul 10 #Python
python3爬虫中异步协程的用法
Jul 10 #Python
浅析Python面向对象编程
Jul 10 #Python
Python爬虫小例子——爬取51job发布的工作职位
Jul 10 #Python
You might like
PHP 调试工具Debug Tools
2011/04/30 PHP
Zend Framework动作助手Json用法实例分析
2016/03/05 PHP
PDO的安全处理与事物处理方法
2016/10/31 PHP
thinkPHP实现的省市区三级联动功能示例
2017/05/05 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
Laravel 5.5官方推荐的Nginx配置学习教程
2017/10/06 PHP
php中curl和soap方式请求服务超时问题的解决
2018/06/11 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
2020/01/26 PHP
js获取浏览器的可视区域尺寸的实现代码
2011/11/30 Javascript
基于JavaScript 数据类型之Boolean类型分析介绍
2013/04/19 Javascript
js将控件隐藏的方法及display属性介绍
2013/07/04 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
2014/03/18 Javascript
JavaScript Array对象扩展indexOf()方法
2014/05/09 Javascript
javascript学习笔记(五)原型和原型链详解
2014/10/08 Javascript
举例讲解JavaScript中将数组元素转换为字符串的方法
2015/10/25 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
2016/04/13 Javascript
Js调用Java方法并互相传参的简单实例
2016/08/11 Javascript
JS出现失效的情况总结
2017/01/20 Javascript
基于easyui checkbox 的一些操作处理方法
2017/07/10 Javascript
Vant的安装和配合引入Vue.js项目里的方法步骤
2018/12/05 Javascript
JavaScript实现网页动态生成表格
2020/11/25 Javascript
[42:24]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第一场 11.01
2020/11/02 DOTA
关于Python中异常(Exception)的汇总
2017/01/18 Python
Sanic框架基于类的视图用法示例
2018/07/18 Python
Python并发concurrent.futures和asyncio实例
2020/05/04 Python
美国复古街头服饰精品店:Need Supply Co.
2017/02/22 全球购物
思想汇报格式
2014/01/05 职场文书
名人演讲稿范文
2014/09/16 职场文书
民主评议政风行风整改方案
2014/09/17 职场文书
党的群众路线教育实践活动总结大会主持词
2014/10/30 职场文书
2014年乡镇卫生院工作总结
2014/11/24 职场文书
爱国电影观后感
2015/06/19 职场文书
初中毕业生感言
2015/07/31 职场文书
创业计划书之淘宝网店
2019/10/08 职场文书
Laravel中获取IP的真实地理位置
2021/04/01 PHP