Python爬虫谷歌Chrome F12抓包过程原理解析


Posted in Python onJune 04, 2020

浏览器打开网页的过程就是爬虫获取数据的过程,两者是一样一样的。浏览器渲染的网页是丰富多彩的数据集合,而爬虫得到的是网页的源代码htm有时候,我们不能在网页的html代码里面找到想要的数据,但是浏览器打开的网页上面却有这些数据。这就是浏览器通过ajax技术异步加载(偷偷下载)了这些数据。

大家禁不住要问:那么该如何看到浏览器偷偷下载的那些数据呢?

答案就是谷歌Chrome浏览器的F12快捷键,也可以通过鼠标右键菜单“检查”(Inspect)打开Chrome自带的开发者工具,开发者工具会出现在浏览器网页的左侧或者是下面(可调整),它的样子就是这样的:

Python爬虫谷歌Chrome F12抓包过程原理解析

让我们简单了解一下它如何使用:

谷歌Chrome抓包:1. 最上面一行菜单

左上角箭头 用来点击查看网页的元素

第二个手机、平板图标是用来模拟移动端显示网页

Elements 查看渲染后的网页标签元素

提醒 是渲染后(包括异步加载的图片、数据等)的完整网页的html,不是最初下载的那个html。

Console 查看JavaScript的console log信息,写网页时比较有用

Sources 显示网页源码、CSS、JavaScript代码

Network 查看所有加载的请求,对爬虫很有帮助

后面的暂且不管。

谷歌Chrome抓包:2. 重要区域

图中红框的两个按钮比较有用,编号为2的是清空请求记录;编号3的是保持记录,这在网页有重定向的时候很有用

图中绿色区域就是加载完整个网页,浏览器的全部请求记录,包括网址、状态、类型等。写爬虫时,我们就要在这里寻找线索,提炼金矿。

最下面编号为4的红框显示了加载这个网页,一共请求了181次,数量是多么地惊人,让人不禁心疼七浏览器来。

点击一条请求的网址,右侧就会出现新的窗口显示该条请求的相信信息:

Python爬虫谷歌Chrome F12抓包过程原理解析

图中左边红框就是点击的请求网址;绿框就是详情窗口。

详情窗口包括,Headers(请求头)、Preview(预览响应)、Response(服务器响应内容)和Timing(耗时)。

Preview、Response 帮助我们查看该条请求是不是有爬虫想要的数据;

Headers帮助我们在爬虫中重建http请求,以便爬虫得到和浏览器一样的数据。

了解和熟练使用Chrome的开发者工具,大家就如虎添翼可以顺利写出自己的爬虫啦。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详解Python的Django框架中的templates设置
May 11 Python
Python计算三角函数之asin()方法的使用
May 15 Python
pymssql数据库操作MSSQL2005实例分析
May 25 Python
使用Django的模版来配合字符串翻译工作
Jul 27 Python
python3.4用循环往mysql5.7中写数据并输出的实现方法
Jun 20 Python
Django后台获取前端post上传的文件方法
May 28 Python
django传值给模板, 再用JS接收并进行操作的实例
May 28 Python
python虚拟环境迁移方法
Jan 03 Python
详解Python中的各种转义符\n\r\t
Jul 10 Python
使用Django实现把两个模型类的数据聚合在一起
Mar 28 Python
python如何保存文本文件
Jun 07 Python
使用Pytorch实现two-head(多输出)模型的操作
May 28 Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
Jun 04 #Python
解决python图像处理图像赋值后变为白色的问题
Jun 04 #Python
Python爬虫JSON及JSONPath运行原理详解
Jun 04 #Python
python 实现图像快速替换某种颜色
Jun 04 #Python
python下对hsv颜色空间进行量化操作
Jun 04 #Python
Python-opencv实现红绿两色识别操作
Jun 04 #Python
Python基于pandas绘制散点图矩阵代码实例
Jun 04 #Python
You might like
PHP 变量类型的强制转换
2009/10/23 PHP
php程序的国际化实现方法(利用gettext)
2011/08/14 PHP
php 获取SWF动画截图示例代码
2014/02/10 PHP
PHP中使用数组指针函数操作数组示例
2014/11/19 PHP
php给一组指定关键词添加span标签的方法
2015/03/31 PHP
nginx下安装php7+php5
2016/07/31 PHP
JavaScript 学习小结(适合新手参考)
2009/07/30 Javascript
js如何判断不同系统的浏览器类型
2013/10/28 Javascript
结合JQ1.9通过js正则判断各种浏览器版本的方法
2013/12/30 Javascript
ExtJS 刷新后如何默认选中刷新前最后一次选中的节点
2014/04/03 Javascript
jQuery实现返回顶部功能适合不支持js的浏览器
2014/08/19 Javascript
关于延迟加载JavaScript
2015/05/05 Javascript
JavaScript中的this到底是什么(一)
2015/12/09 Javascript
JQuery ztree 异步加载实例讲解
2016/02/25 Javascript
如何通过js实现图片预览功能【附实例代码】
2016/03/30 Javascript
微信小程序与php 实现微信支付的简单实例
2017/06/23 Javascript
nodejs接入阿里大鱼短信验证码的方法
2017/07/10 NodeJs
vue2.0的虚拟DOM渲染思路分析
2018/08/09 Javascript
axios取消请求的实践记录分享
2018/09/26 Javascript
Vue.js中 v-model 指令的修饰符详解
2018/12/03 Javascript
JavaScript如何处理移动端拍摄图片旋转问题
2019/11/16 Javascript
微信小程序使用 vant Dialog组件的正确方式
2020/02/21 Javascript
如何使用JavaScript实现无缝滚动自动播放轮播图效果
2020/08/20 Javascript
Python3连接MySQL(pymysql)模拟转账实现代码
2016/05/24 Python
Python变量和数据类型详解
2017/02/15 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
2017/11/11 Python
python 动态加载的实现方法
2017/12/22 Python
Django学习笔记之ORM基础教程
2018/03/27 Python
Opencv求取连通区域重心实例
2020/06/04 Python
利用Python将图片中扭曲矩形的复原
2020/09/07 Python
Python二元算术运算常用方法解析
2020/09/15 Python
CSS3 创建网页动画实现弹跳球动效果
2018/10/30 HTML / CSS
纪念建党演讲稿范文
2014/01/13 职场文书
安全生产月标语
2014/10/07 职场文书
考试作弊检讨
2015/01/27 职场文书
python实现简单的名片管理系统
2021/04/26 Python