Python爬虫必备:浏览器开发者工具的使用,非常详细

2023-11-02

最近很多小伙伴说,不会用浏览器开发者工具,今天我们就一起来深入了解一下开发者工具。

以谷歌浏览器为例

谷歌浏览器开发者工具中的Network 是我们学习经常用到的,那么你都知道他们每个功能的意义吗?


因本人经常有360极速浏览器,谷歌内核,所以本文以360极速浏览器的开发者工具Network为例,基本和谷歌的Network一致

谷歌Network大致可以帮我们实现以下功能

看接口的返回值

看接口的请求头,响应头

查看资源的加载速度

查看资源的大小,缓存情况,响应情况(cdn、waiting 等时间)

谷歌NETWORK的控制面板主要分为7大板块

1、功能区
2、筛选区(功能区漏斗需要开启)
3、快照区(功能区需要打开屏幕捕获)
4、时间轴区(功能区需要开启overview)
5、主显示区
6、信息汇总区
7、控制台

如图所示

一、功能区

1、红色圆点代表是否开启 network 的日志功能,如果灰色的,就代表未开启,红色的代表已开启.2.

2、清除 network 日志

3、摄像机是捕获屏幕,默认是关闭状态,点击后图标变成蓝色,会记录页面在不同时间下的快照,此按钮开启才会显示3快照区

4、漏斗代表是否开启过滤选项,此按钮开启会才会显示2筛选区

5、放大镜代表快速查找按钮,可以迅速查到当前页面包含**东西,

6、代表是否使用更大的区域显示请求记录,我喜欢大的显示,一般可以开启

7、代表是否显示overview概括,此按钮开启才会显示5时间轴

8、Group by frame,勾选了该选项后,会对网络请求按表单名称进行分组,如下图所示

9、重要:Preserve log,是否保留日志,如果勾上,页面刷新后,日志也不会消失(这功能很有用,比如页面跳转后,你想看页面跳转前发出的请求有哪些,比如查看别人网站登录请求,登录成功返回什么,登录成功后又发起了些什么请求,重定向到什么地址)作用:

(1)我们可以看到一些中间页的跳转,省去了抓包的麻烦。

(2)可以和上个页面的数据比对。

10、Disable cache,缓存开关,开启这个功能,浏览器关于当前网站的js、css、图片…等缓存都会失效,所有请求都会重新发送给服务器。ctrl+F5也可以达到同样的效果。当我们打开 disable cache 之后,我们就不需要关了,每次都是无缓存的加载.

Group by frame勾选后分组效果

11、Offline 是网络连接开关,比如说在测试 PWA。或者说弱网的情况下的一种快速配置。

12、Online这个下拉列表是网速阀值,可以设置上传下载最大网速等.一般可以网页在不同网络状态下的显示效果

二、筛选区

1.作用:请求比较多的页面,我们有可能需要过滤。

2.功能:工具栏提供了,路径过滤(支持正则),类型过滤(All,XHR,js,图片等),方便快速查看,按住CTRL可多选

3.Hide data URLs的作用:网站开发者很多时候会将一些小的图片或者 CSS 脚本,以 BASE64 格式嵌入到 HTML 中,以减少 HTTP 请求数。当勾选了 Hide data URLs 选项后,就可以隐藏掉请求列表中的像 data: 或者 blob: 类请求。

4.filter查找框

除了以上几个 Chrome 提供的过滤器以外,还可以非常灵活的在过滤框中使用过滤属性进行请求日志的筛选。

可以进行模糊搜索(只搜索url地址),如果首尾加上/,则表示使用正则匹配(同时搜索 URL 地址和返回内容)旧版本 chrome 可能会在过滤输入框右边有个 regexp 选项,勾选了正则才会生效

常见的filter过滤属性可参考下表

文本版:

domain:筛选出指定域名的请求,不仅支持自动补全,还支持*匹配。

has-response-header:筛选出包含指定响应头的请求。

is:通过is:running找出WebSocket请求。

larger-than:筛选出请求大于指定字节大小的请求,其中1000表示1k。

method:筛选出指定HTTP方法的请求,比如GET请求、POST请求等。

mime-type:筛选出指定文件类型的请求。

mixed-content:筛选出混合内容的请求(不懂啥意思)。

scheme:筛选出指定协议的请求,比如scheme:http、scheme:https。

set-cookie-domain:筛选出指定cookie域名属性的包含Set-Cookie的请求。

set-cookie-name:筛选出指定cookie名称属性的包含Set-Cookie的请求。

set-cookie-value:筛选出指定cookie值属性的包含Set-Cookie的请求。

status-code:筛选出指定HTTP状态码的请求。

(1)filter使用方法1:我们想筛选网页中来自于不同域名的请求资源,就可以在过滤框中输入 [domain:] ,Chrome 会帮我们自动补齐相关的域名信息。

(2)打开的网页中,如何查看哪些请求使用了缓存?使用命令 [is:from-cache],对应的还有[is:runing]

三、快照区 和 四、时间轴区

这两个区域主要对网页整理的加载情况进行一个分解性的展示

快照区可以更直观的看到浏览器打开网页的流程,和打开整个网页所用时间

而时间轴区可以滑动鼠标滚轮看查看不懂时间加载文件的情况,对找出网页中加载慢的文件还是很有帮助的

五、主显示区

1.主显示区包含了 name(姓名),status(状态),Type(类型),Initiator(发起者),Size(大小),Time(时间),Waterfall(瀑布分析)

Name:请求资源的名称

Status HTTP:状态码

Type:请求资源的 MIME 类型

Initiator:发起请求的对象或进程

Size:服务器返回的响应大小(包括头体和包体),可显示解压后大小

Time:总持续时间,从请求的开始到接收响应中的最后一个字节

Waterfall:各请求相关活动的直观分析图

2.请求列表默认是按照资源请求发起的时间升序排列的,我们也可以选择按指定列排序,点击相关列表头即可

3.通过点击某个资源的Name可以查看该资源的详细信息,根据选择的资源类型显示的信息也不太一样,可能包括如下Tab信息:

Headers 该资源的HTTP头信息。

Preview 根据你所选择的资源类型(JSON、图片、文本)显示相应的预览。

Response 显示HTTP的Response信息。

Cookies 显示资源HTTP的Request和Response过程中的Cookies信息。

Timing 显示资源在整个请求生命周期过程中各部分花费的时间。

针对上面4个Tab进行详细讲解一下各个功能:

① 查看资源HTTP头信息

在Headers标签里面可以看到HTTP Request URL、HTTP Method、Status Code、Remote Address等基本信息和详细的Response Headers 、Request Headers以及Query String Parameters或者Form Data等信息。

② 查看资源预览信息

在Preview标签里面可根据选择的资源类型(JSON、图片、文本、JS、CSS)显示相应的预览信息。下图显示的是当选择的资源是JSON格式时的预览信息。

③ 查看资源HTTP的Response信息

在Response标签里面可根据选择的资源类型(JSON、图片、文本、JS、CSS)显示相应资源的Response响应内容(纯字符串)。下图显示的是当选择的资源是CSS格式时的响应内容。

④ 查看资源Cookies信息

如果选择的资源在Request和Response过程中存在Cookies信息,则Cookies标签会自动显示出来,在里面可以查看所有的Cookies信息。

Name:cookie的名称。
Value:cookie的值。
Domain:cookie所属域名。
Path:cookie所属URL。
Expire/Max-Age:cookie的存活时间。
Size:cookie的字节大小。
HTTP:表示cookie只能被浏览器设置,而且JS不能修改。
Secure:表示cookie只能在安全连接上传输。

⑤ 分析资源在请求的生命周期内各部分时间花费信息

在Timing标签中可以显示资源在整个请求生命周期过程中各部分时间花费信息,可能会涉及到如下过程的时间花费情况:

Queuing 排队的时间花费。可能由于该请求被渲染引擎认为是优先级比较低的资源(图片)、服务器不可用、超过浏览器的并发请求的最大连接数(Chrome的最大并发连接数为6).

Stalled 从HTTP连接建立到请求能够被发出送出去(真正传输数据)之间的时间花费。包含用于处理代理的时间,如果有已经建立好的连接,这个时间还包括等待已建立连接被复用的时间。

Proxy Negotiation 与代理服务器连接的时间花费。

DNS Lookup 执行DNS查询的时间。网页上每一个新的域名都要经过一个DNS查询。第二次访问浏览器有缓存的话,则这个时间为0。

Initial Connection / Connecting 建立连接的时间花费,包含了TCP握手及重试时间。

SSL 完成SSL握手的时间花费。

Request sent 发起请求的时间。

Waiting (Time to first byte (TTFB)) 是最初的网络请求被发起到从服务器接收到第一个字节这段时间,它包含了TCP连接时间,发送HTTP请求时间和获得响应消息第一个字节的时间。

Content Download 获取Response响应数据的时间花费。

TTFB这个部分的时间花费如果超过200ms,则应该考虑对网络进行性能优化了,可以参见网络性能优化方案及里面的相关参考文档。

如何查看资源的发起者(请求源)和依赖项(按住Shift)

通过按住Shift并且把光标移到资源名称上,可以查看该资源是由哪个对象或进程发起的(请求源)和对该资源的请求过程中引发了哪些资源(依赖资源)。

在该资源的上方第一个标记为绿色的资源就是该资源的发起者(请求源),有可能会有第二个标记为绿色的资源是该资源的发起者的发起者,以此类推。

在该资源的下方标记为红色的资源是该资源的依赖资源。

六、信息汇总区

信息汇总区中显示[请求数],[数据传输量],[加载时间信息]等信息

DOMContentLoaded事件是在页面上DOM完全加载并解析完毕之后触发,不会等待CSS、图片、子框架加载完成。DOMContentLoaded事件在Overview上用一条蓝色竖线标记,并且在Summary以蓝色文字显示确切的时间。

load事件是在页面上所有DOM、CSS、JS、图片完全加载完毕之后触发。load事件同样会在Overview和Requests Table上用一条红色竖线标记,在Summary也会以红色文字显示确切的时间。

结合DOM文档加载的加载步骤,DOMContentLoaded事件/Load事件触发时机如下:

解析HTML结构。

加载外部脚本和样式表文件。

解析并执行脚本代码。// 部分脚本会阻塞页面的加载

DOM树构建完成。//DOMContentLoaded 事件

加载图片等外部文件。

页面加载完毕。//load 事件

七、console控制区

这个区本来是F12里面单独为一列的,但是因为和network有着紧密的联系,所以集合成一个了,后续单做一个版块来介绍

很多小伙伴在学习Python的过程中,因为没有好的学习资料或者是遇到问题不能及时的得到解决,导致自己学习不下去, 所以小编给大家准备了Python需要的相关软件工具、Python基础教程、各种Python实战案例源码、数百本Python电子书、Python学习路线图都打包好了,免费领取~

文末名片扫码即可,有什么学习问题也是可以问的。

好了,今天的分享就到这结束了,下次见~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python爬虫必备:浏览器开发者工具的使用,非常详细 的相关文章

  • 错误:process_executor.py:702: ... 当一些作业被分配给执行器时,工作人员停止了。这可能是由于工作超时太短造成的

    根据主题中的错误 修复方法是什么 环境 Python 3 9 或 3 10 Windows 10 x64 使用时出现错误joblib https joblib readthedocs io en latest 对于并行处理 result c
  • python sys.path 故障排除

    python 文档位于http docs python org library sys html http docs python org library sys html比如说sys path is 从环境变量 PYTHONPATH 以及
  • 蟒蛇 | MySQL | AttributeError:模块“mysql.connector”没有属性“connect”

    我正在学习 python 中的一个新库 mysql 我尝试执行以下命令 import mysql connector mydb mysql connector connect host localhost user root passwd
  • 创建上下文后将 jar 文件添加到 pyspark

    我正在笔记本上使用 pyspark 并且不处理 SparkSession 的创建 我需要加载一个包含一些我想在处理 rdd 时使用的函数的 jar 您可以使用 jars 轻松完成此操作 但在我的特定情况下我无法做到这一点 有没有办法访问sp
  • 使用python从gst管道抓取帧到opencv

    我在用着OpenCV http opencv org 和GStreamer0 10 我使用此管道通过自定义套接字通过 UDP 接收 MPEG ts 数据包sockfd由 python 提供并显示它xvimagesink 而且效果很好 以下命
  • 在Python上获取字典的前x个元素

    我是Python的新手 所以我尝试用Python获取字典的前50个元素 我有一本字典 它按值降序排列 k 0 l 0 for k in len dict d l 1 if l lt 51 print dict 举个小例子 dict d m
  • Arcpy 模数在 Pycharm 中不显示

    如何将 Arcpy 集成到 Pycharm 中 我尝试通过导入模块但它没有显示 我确实知道该模块仅适用于 2 x python arcpy 在 PyPi Python 包索引 上不可用 因此无法通过 pip 安装 要使用 arcpy 您需要
  • AttributeError:“模块”对象没有属性[重复]

    这个问题在这里已经有答案了 我有两个 python 模块 a py import b def hello print hello print a py print hello print b hi b py import a def hi
  • python 中的 <> 运算符有什么作用?

    我刚刚遇到这个here http www feedparser org feedparser py 总是这样使用 if string1 find string2 lt gt 1 pass 什么是 lt gt 运算符这样做 为什么不使用通常的
  • Python将文本文件解析为嵌套字典

    考虑以下数据结构 HEADER1 key value key value HEADER2 key value key value HEADER3 key value HEADER4 key value key value 原始数据中没有缩进
  • 两个不同长度的数据帧的列之间的余弦相似度?

    我在 df1 中有文本列 在 df2 中有文本列 df2 的长度将与 df1 的长度不同 我想计算 df1 text 中每个条目与 df2 text 中每个条目的余弦相似度 并为每场比赛给出分数 输入样本 df1 mahesh suresh
  • 查找 Pandas DF 行中的最短日期并创建新列

    我有一个包含多个日期的表 有些日期将为 NaN 我需要找到最旧的日期 所以一行可能有 DATE MODIFIED WITHDRAWN DATE SOLD DATE STATUS DATE 等 因此 对于每一行 一个或多个字段中都会有一个日期
  • pandas 相当于 np.where

    np where具有向量化 if else 的语义 类似于 Apache Spark 的when otherwise数据帧方法 我知道我可以使用np where on pandas Series but pandas通常定义自己的 API
  • Airflow 1.9 - 无法将日志写入 s3

    我在 aws 的 kubernetes 中运行气流 1 9 我希望将日志发送到 s3 因为气流容器本身的寿命并不长 我已经阅读了描述该过程的各种线程和文档 但我仍然无法让它工作 首先是一个测试 向我证明 s3 配置和权限是有效的 这是在我们
  • 在骨架图像中查找线 OpenCV python

    我有以下图片 我想找到一些线来进行一些计算 平均长度等 我尝试使用HoughLinesP 但它找不到线 我能怎么做 这是我的代码 sk skeleton mask rows cols sk shape imgOut np zeros row
  • 在Raspberry pi上升级skimage版本

    我已经使用 Raspberry Pi 2 上的 synaptic 包管理器安装了 python 包 然而 skimage 模块版本 0 6 是 synaptic 中最新的可用版本 有人可以指导我如何将其升级到0 11 因为旧版本中缺少某些功
  • 检测是否从psycopg2游标获取?

    假设我执行以下命令 insert into hello username values me 我跑起来就像 cursor fetchall 我收到以下错误 psycopg2 ProgrammingError no results to fe
  • 如何在亚马逊 EC2 上调试 python 网站?

    我是网络开发新手 这可能是一个愚蠢的问题 但我找不到可以帮助我的确切答案或教程 我工作的公司的网站 用 python django 构建 托管在亚马逊 EC2 上 我想知道从哪里开始调试这个生产站点并检查存储在那里的日志和数据库 我有帐户信
  • Django 管理器链接

    我想知道是否有可能 如果可以的话 如何 将多个管理器链接在一起以生成受两个单独管理器影响的查询集 我将解释我正在研究的具体示例 我有多个抽象模型类 用于为其他模型提供小型的特定功能 其中两个模型是DeleteMixin 和GlobalMix
  • 如何使用 python 定位和读取 Data Matrix 代码

    我正在尝试读取微管底部的数据矩阵条形码 我试过libdmtx http libdmtx sourceforge net 它有 python 绑定 当矩阵的点是方形时工作得相当好 但当矩阵的点是圆形时工作得更糟 如下所示 另一个复杂问题是在某

随机推荐

  • 部署elk集群6

    文章目录 一 集群环境 二 部署es 1 192 168 4 115 2 192 168 4 116 3 192 168 4 118 4 启动测试 5 加入开启自启动 6 故障 三 部署logstash 1 官方地址 2 解压安装 3 创建
  • Pycharm2022安装及python环境的搭建

    一 安装Pycharm 首先进入pycharm的官网https www jetbrains com pycharm download section windows 选择社区版进行下载 运行启动安装向导的pycharm 2022 2 4 e
  • cookie注入

    什么是cookie Cookies 确定身份 在服务器产生 存储在客户端的一小段文本信息 格式为字典 键值对 cookie分类 会话级 保存在内存 浏览器关闭则丢失 持久级 保存至硬盘 只有 当失效时间到了才会清除 一般都是持久化比较多 打
  • 设计模式(二十一) 状态模式

    状态模式也是一种行为型模式 当我们的程序中需要一些状态转换 对于不同的状态需要不同的行为时 我们就可以考虑使用状态模式 下面用交通灯来当例子 我们需要红黄绿三种颜色的状态 interface State void show class Re
  • Springboot Logback日志多文件输出(按日期和大小分割)

    在早期的日志Slf4j Log4j使用方式中 我们使用最多的就是LoggerFactory来获取一个Logger实例 logback的原理也一样 本文示例文件分割按照日志大小和日期进行分割 目录 配置logback xml 配置需要的pro
  • 【Unity入门计划】Unity2D动画(2)-脚本与混合树实现玩家角色动画过渡

    目录 1 玩家角色移动伴随的简单动画 1 1 行走 1 2 停留 1 3 攻击敌人 触发型 1 4 受伤 触发型 1 5 跳跃 1 6 下蹲 2 动画间的过渡 3 过渡的判断逻辑 3 1 行走与停留 移动速度 3 2 受伤 攻击 bool变
  • 如何从一个服务器拷文件到另一个服务器

    scp sftp rsync 如果文件很多或者很大建议rsync SecureCRT与SshClient不同的就是 SecureCRT没有图形化的文件传输工具 不过也不影响 用命令来实现的话 其实会方便快捷很多 第一种方式 上传文件只需在s
  • Java中Validator的使用

    原文 Java中Validator的使用 荼白 CSDN博客 java validator 很多时候都需要校验穿的参数是否符合规则 但是这种校验的代码会重复很多 所以引入 validator 来校验参数 这样可以省去很多冗余的代码 目录 p
  • 【Caffe】Windows下调用生成的classification.exe单张图片分类错误问题

    第一次更新 2017 10 25 本人环境 1 Caffe工程已经编译好 2 Matlab接口可用 问题概述 在用Caffe自带的程序对图片进行分类时 Matlab接口下识别率与训练时test的准确率一致 但使用VS接口 即直接调用工程生成
  • java ibatis 操作数据库延迟_javaweb项目,为什么过段时间,跟数据库就失去连接呀?...

    Cause org apache commons dbcp SQLNestedException Cannot get a connection pool exhausted at com ibatis sqlmap engine mapp
  • 【.Net实用方法总结】 整理并总结System.Data中DataColumnCollection类及其方法介绍

    作者简介 博主是一位 Net开发者 同时也是RPA和低代码平台的践行者 个人主页 会敲键盘的肘子 系列专栏 Net实用方法总结 专栏简介 博主针对 Net开发和C站问答过程中遇到的问题进行总结 形成本专栏 希望可以帮助到您解决问题 座右铭
  • 如何创建一个csv格式的文件

    function downloadFile fileName content var aTag document createElement a var blob new Blob ufeff content type text txt c
  • 复旦nlp实验室 nlp-beginner 任务一:基于机器学习的文本分类

    实现基于logistic softmax regression的文本分类 参考 文本分类 神经网络与深度学习 第2 3章 数据集 Classify the sentiment of sentences from the Rotten Tom
  • 【蓝桥杯Python】基础练习17:矩阵乘法

    试题 基础练习 矩阵乘法 目录 题目 资源限制 问题描述 输入格式 输出格式 样例输入 样例输出 解答 Python源代码 题目 资源限制 时间限制 1 0s 内存限制 512 0MB 问题描述 给定一个N阶矩阵A 输出A的M次幂 M是非负
  • 多因素方差分析_多因素方差分析(1)

    之前介绍的方差分析 称之为是单因素方差分析 one way ANOVA 主要研究单个因素对因变量的影响 多因素方差分析 是研究多个 2个或2个以上 自变量对因变量的影响 可以直观表现为以下公式 单因素方差分析 Yi a b Xi e 多因素
  • c语言变参宏和利用变参宏的一些简单的打印实现

    一些函数 如printf 接受数量可变的参数 stdvar h头文件提供了工具 让用户自定义带可变参数的函数 通过把宏参数列表中最后的参数写成省略号 即3个点 来实现这一功能 这样 预定义宏 VA ARGS 可用在替换部分中 表明省略号代表
  • Java的运算符及开发环境的安装

    一 运算符 1 赋值运算符 变量名 表达式 符合赋值运算符 2 算术运算符 整除 求余 在后 先用再加 在前 先加再用 3 关系运算符 如 gt lt gt lt char类型是可以比较 因为char类型存储的是对应的ASCII 判断一个字
  • 哪些循环依赖问题Spring解决不了?

    前言 大家都知道 Spring 解决了循环依赖的问题 网上也可以搜到 Spring 是使用三级缓存来解决循环依赖的 但有些时候循环依赖问题还是会导致启动报错 也就说明 在某些情况下 Spring 是没有办法解决循环依赖问题的 我们就来探究一
  • JIRA工作流节点状态变化前弹出窗口填写日志或者备注

    一 定义弹出框的页面 1 进入问题管理页面 并点添加屏幕 2 自定义弹出页面的名称 3 点击添加后会进入配置页面 配置页面所包含的字段 二 在工作流中配置页面 1 进入工作流编辑页面双击需要添加弹出页面的流程 2 在弹出框中页面栏选择刚刚配
  • Python爬虫必备:浏览器开发者工具的使用,非常详细

    最近很多小伙伴说 不会用浏览器开发者工具 今天我们就一起来深入了解一下开发者工具 以谷歌浏览器为例 谷歌浏览器开发者工具中的Network 是我们学习经常用到的 那么你都知道他们每个功能的意义吗 因本人经常有360极速浏览器 谷歌内核 所以