【爬虫】02.浏览器中断点解析

本文介绍了JavaScript调试中的各种断点类型,包括DOM断点用于样式变化,DOM事件断点处理复杂事件,XHR断点跟踪Ajax请求,以及代码行断点、代码断点和全局事件断点的使用。适合爬虫开发者掌握浏览器开发者工具的调试技巧。
摘要由CSDN通过智能技术生成

断点介绍

我们在了解断点的类型之前,首先来了解一下如何进行调试。
首先,我们可以来到Sources界面,点开Snippets。
相信使用过IDE工具进行调试的对右侧中间的几个按钮不会陌生,
从第二个按钮开始分别是**单步(跳过方法)、步入、步出、单步(自动步入方法)**按钮。

最后两个按钮用于取消断点异常断点(可结合Never Pause here绕过一些检测)

下面我们开始介绍断点类型及其使用场景:

1.DOM断点

DOM断点可用于页面中样式改变(重新渲染)时进行中断

就例如,bing中的这个搜索框,当我们鼠标不在搜索框上时:

在这里插入图片描述

而当我们鼠标放到搜索框上时,会出现一个小叉
在这里插入图片描述

这种就属于页面样式发生改变,这时我们可以在element界面中右键进行下断。

选择的类型可以根据实际情况进行选择
在这里插入图片描述

下断之后重新将鼠标移到搜索框上,调试窗口会自动跳转到Source页面,并在对应的js代码上断住。
在这里插入图片描述

并且我们还能在旁边的DOM断点那栏看到我们下的断点位置:
在这里插入图片描述
优点:遇到代码混淆或者无法通过搜索方式找到定位词时可迅速断住。

缺点:离加密函数较远,无法根据栈快速定位。

2.DOM事件断点

如果直接使用DOM断点形式无法下断,我们可以使用DOM事件断点进行下断。

下断过程如下:

找到需要下断的按钮,可以是验证码发送或者登陆按钮,这里演示的是bing的搜索按钮:
在这里插入图片描述

选择之后,可以在旁边的调试工具上看到事件监听这一栏,会发现事件类型有点多,这时可以将上面的Ancestors All按钮去掉,只看当前按钮对应的事件:
在这里插入图片描述
点击上面的js代码定位链接,这时会跳转到对应的事件触发位置,这时我们就能够配合代码行断点进行调试了。
在这里插入图片描述
优点:遇到代码混淆或者无法通过搜索方式找到定位词时可快速定位
缺点:离加密函数较远,无法根据栈快速定位。

3.XHR断点

xhr,全称为XMLHttpRequest,用于与服务器交互数据,支持同步或异步地返回 Web 服务器的响应,并且能够以文本或者一个 DOM 文档的形式返回内容,是ajax功能实现所依赖的对象。

以bing的这个搜索框为例,当我们输入文字的时候,浏览器就会向服务器发送ajax请求,将我们输入的内容发送给服务器。在下断之前我们需要找到通过XHR方式发送的数据包:
在这里插入图片描述

然后将数据包URL中域名后的目录名复制一下:
在这里插入图片描述
然后找到Sources中XHR断点这一栏,点击+,将刚刚复制的内容粘贴上去
在这里插入图片描述
在这里插入图片描述

然后可以试着在搜索框中输入内容:
在这里插入图片描述

成功被断住。

优点:离加密函数和解密函数都比较近
缺点:只能断住xhr方式发送的代码

4.代码行断点

代码行断点,最基本的一种断点类型,不过多讲解,直接看图:
在这里插入图片描述

5.代码断点

在代码中只要写下debugger相当于手动进行了代码行断点,当运行到debegger时就会断住。
在这里插入图片描述

6.全局事件断点

全局事件断点,浏览器中能使用的如下图框中所示,基本涵盖整个网页的生命周期,具体用法不一一介绍。
在这里插入图片描述

7.异常捕获断点

下断方式比较简单,像下图一样打开Source找到最后的那个像播放一样的按钮,将Pause on caught exceptions勾选上即可。
在这里插入图片描述
优点:在跟环境的时候能用到,可以去掉一下无用的try-catch,也可以过一些反调

总结

这是爬虫的第二篇,大家还没看第一篇【爬虫】01.浏览器F12-开发者工具的妙用的可以看一下哦~

  • 17
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python爬虫的webdriver.chrome是一个用于控制浏览器的工具,它可以模拟用户的行为来进行网页的自动化操作。在Python,有许多第三方库可以帮助我们下载和更新chromedriver以确保与Chrome浏览器版本相一致。 一种常用的方法是使用webdriver-manager库。通过使用pip install webdriver-manager命令来安装该库,我们可以方便地管理各种主流浏览器所需的webdriver,包括chrome、Edge、chromium、firefox、IE、Opera。 假设我们想要下载最新版本的chromedriver,我们可以使用以下几行代码来实现: ``` from webdriver_manager.chrome import ChromeDriverManager from selenium import webdriver from selenium.webdriver.chrome.service import Service driver_path = ChromeDriverManager().install() driver = webdriver.Chrome(service=Service(driver_path)) ``` 这段代码会自动下载最新版本的chromedriver,并将其下载路径传递给webdriver.Chrome()函数,以便将其与selenium一起使用。 如果我们想要下载指定版本的chromedriver,可以通过向ChromeDriverManager实例传入version参数来实现,代码示例如下: ``` from webdriver_manager.chrome import ChromeDriverManager ChromeDriverManager(version="106.0.5249.21").install() ``` 这段代码将下载并安装指定版本的chromedriver。 总结起来,通过使用第三方库webdriver-manager,我们可以轻松地下载和更新chromedriver,以确保与Chrome浏览器版本相一致。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值