- 博客(51)
- 收藏
- 关注
原创 Edge开发者工具:保留日志与禁用缓存详解
在(或基于 Chromium 的浏览器,如 Chrome)中,和是开发者工具(DevTools)中的两个非常实用的功能,主要用于调试网页加载、网络请求和性能问题。下面详细介绍这两个功能的用途与用法。
2026-01-02 17:21:13
236
原创 JS逆向:DOM交互与window.onload详解
是浏览器(Window 对象)提供的一个页面加载事件处理属性,它用于指定一个回调函数,这个回调函数会在整个页面完全加载完成后才自动执行。HTML 文档解析生成的 DOM 树(所有标签、元素)外部引入的资源:CSS 样式表、JavaScript 文件、图片(<img>)、音频 / 视频、字体文件等框架页面(<iframe>)中的内容。
2026-01-01 21:51:06
209
原创 python:使用sorted()对列表中的字典进行排序
如果不需要保留原始列表,想要直接修改原列表,可以使用列表的。以上结果默认是按照升序进行排列的。如果列表中可能存在缺少。
2025-12-29 15:10:56
142
原创 python:selenium,CSS位置偏移反爬案例
names数据类型names是一个 PyQuery集合对象(可以理解为「多个单个节点的容器」),它不是单个节点,而是包含了页面中所有匹配选择器的节点的集合。来源:从整个页面源码解析后的doc(根PyQuery对象)中,筛选出所有满足「.item节点下的.name节点」条件的元素,全部存入names中。names是一个「名称节点列表」,里面装着页面上所有要提取的名称对应的节点(比如页面上有 10 个商品名称,names就包含 10 个.name节点)。数据类型name_html是一个单个的。
2025-12-29 13:56:40
1099
原创 python:playwright事件监听、获取节点属性
定义一个名为的函数,它将在每次页面发起网络请求并收到响应时被调用。response是一个Response对象,包含:.status:HTTP 状态码(如 200、404).url:该响应对应的完整 URL⚠️ 注意:这里拼写错误 ——"Statue"应为"Status"(不影响运行,但属于笔误)。✅ 功能:打印出所有加载资源(HTML、JS、CSS、XHR、图片等)的响应状态和 URL。
2025-12-29 11:18:51
592
原创 python:playwright的基本使用
使用 Playwright 自动化测试框架,在 Chromium、Firefox 和 WebKit 三种浏览器中分别打开百度首页,截图保存,并打印页面标题。
2025-12-29 08:59:46
888
原创 使用 webdriver-manager配置geckodriver
使用来自动管理(无需手动下载、配置环境变量),这是 Selenium 自动化中更高效、更省心的方案,我会为你提供完整的配置步骤、代码示例和核心注意事项。
2025-12-28 17:16:48
338
原创 python:global用法体会
这是因为先测试无global函数时,无global的函数中没有global,没有改变session变量的值,session依然等于None,没有改变,所以输出的时候是None。所以说,先后执行有与无global变量的函数时,输出的结果就会不一样,这样更利于理解global变量在函数作用域中所起到的作用。而后者的代码,是先测试的有global变量的函数,因为函数中有global变量,global变量就会告诉python解释器。def no_global_demo(),再执行有global函数。
2025-12-28 15:25:30
415
原创 python3网络爬虫开发实战 第2版:并发限制
用于创建一个异步信号量对象,其中是传入的最大许可数(即允许同时执行的协程最大数量),它是asyncio内置的同步原语,仅适用于异步协程环境。创建异步信号量对象,核心作用是限制异步协程的最大并发数,实现限流;底层基于 “许可数” 工作,通过 “获取 - 挂起 - 释放 - 唤醒” 的循环,保证并发数不超过;推荐使用async with异步上下文管理器,自动管理许可的获取与释放,安全简洁;仅适用于异步协程环境,不会阻塞事件循环,是异步编程中控制并发的核心工具。
2025-12-28 11:52:57
782
原创 python,如果定义了await funa()函数,哪几种情况下可以启动函数?
在 Python 中,如果你定义了一个 协程函数(coroutine function),例如:那么 本身并不会立即执行,而是返回一个 协程对象(coroutine object)。要真正“启动”或“运行”这个协程函数,有以下几种常见方式:这是最常见的方式。你只能在 定义的函数内部使用 :✅ 2. 使用事件循环(Event Loop)直接运行协程(适用于顶层代码)在 Python 3.7+ 中,可以使用 来运行协程(推荐方式):✅ 3. 使用 或 (调度为后台任务)
2025-12-28 10:51:07
281
原创 python3网络爬虫开发实战 第2版:使用aiohttp
Python 3.7+ 优先使用,代码更简洁、更安全自动管理事件循环,避免手动操作的遗漏低版本兼容可保留原写法,补充完善资源回收优化后的异步任务执行代码,功能与原代码一致,但可读性和健壮性更强。
2025-12-28 09:59:11
841
原创 python3网络爬虫开发实战 第二版:绑定回调
HTTP GET 请求方法,作用是向指定的 URL 发送 HTTP GET 请求,等待服务器响应并返回一个。requests.get(url)返回值的内容。
2025-12-26 17:24:08
167
原创 python:Ajax爬取电影详情实战
的核心是安全地从接口返回的字典中获取电影列表数据,避免因字段缺失导致程序崩溃;get方法是爬虫开发中处理接口数据的常用技巧(接口返回格式可能异常),比直接取值更健壮;遍历results列表的目的是获取每部电影的id,为爬取详情页提供必要的参数。
2025-12-26 15:09:21
323
原创 python:输出JSON
这个过程也叫“编码”(encoding)。、自定义类等,会报错,需通过。是 Python 标准库。模块中的一个函数,用于将。
2025-12-25 14:52:06
329
原创 python3网络爬虫开发实战 第2版 4.1TEXT文本文件存储的代码错误
会被 Python 解释为“无效转义序列”,虽然。上下文管理器自动处理文件的打开和关闭。在正则中是合法的),但会发出。后续再尝试写入就会抛出错误(模块仍能正确识别(因为。
2025-12-25 12:52:26
259
原创 CSS 选择器(CSS Selectors) 的完整规则汇总
以下是的完整规则汇总,适用于网页开发、爬虫(如 PyQuery、BeautifulSoup、Scrapy、Selenium 等)以及前端样式编写。
2025-12-25 12:00:07
621
原创 python:协程及任务创建
运行结果如下:说明你调用了,但没有用await或来真正执行它。Python 只是创建了一个协程对象,然后就结束了程序,导致协程“被遗忘”,于是发出警告。
2025-12-25 11:34:10
804
原创 python :__call__方法
_call__让类的实例可以像函数一样被调用,执行__call__中的逻辑。支持传入参数,参数规则与普通函数一致。常用于实现带状态的装饰器工厂模式函数式对象等场景。可通过callable()检查对象是否可调用。
2025-12-24 17:46:56
251
原创 python:线程池创建与使用
在 Python 中,可以使用创建进程池,并调用其map()方法来并行处理任务。虽然推荐使用with语句(上下文管理器)来自动管理资源(如关闭和 join 进程池),with,则需要close()join()来确保资源被正确释放。下面是一个不使用with。
2025-12-24 12:00:03
403
原创 python:单例模式
_new__首先说一下,查询了这么多单例模式的讲解,还是bilibili的这个视频讲解最清楚、简洁、实用且到位以上是单例模式的应用方法与思路以上Python 代码展示了中__new__方法的基础使用,__new__是 Python 中用于创建实例的静态方法(特殊方法),负责为对象分配内存空间,而__init__是实例初始化方法,负责对已创建的实例进行属性初始化。下面为你详细解析这段代码的执行逻辑、输出结果,以及进一步的扩展(比如实现单例模式)。
2025-12-23 22:57:46
616
原创 python:yield用法
yield是 Python 中用于定义**生成器(generator)**的关键字。与return不同,yield在函数中每次调用时会“产出”一个值,并暂停函数的执行状态;下次再调用时,从上次暂停的位置继续执行。
2025-12-23 12:04:51
167
原创 python:if __name__ == ‘__main__‘用法
是 Python 中让一个文件既可作为模块导入,又可作为独立程序运行的关键机制。
2025-12-22 10:08:59
232
原创 IA-32:过程调用
TYPE的计算规则:返回指定标识符(数据类型 / 变量 / 数组元素)的基本存储单元字节数,本质是汇编器在编译阶段计算的常量值(非运行时计算)。USES是专有的伪指令(非 x86 硬件指令),用于简化 IA-32 汇编过程中非易失性寄存器的保存与恢复,本质是编译器级别的语法糖,无需手动编写push/pop指令。仅支持 MASM/TASM,NASM/GAS 无此伪指令;仅能在PROC定义行使用(PROC与USES之间空格分隔);作用域仅限当前过程,过程结束时自动恢复寄存器。
2025-12-17 13:30:12
1002
原创 Visual Studio 2022 模板的使用方法
在前面的文章,我们已经配置好Irvine32的各种库,并在Visual Studio 2022中进行了调试和使用,均可以正常输出结果。那么 ,下一步,我们就以此为模板,创建可复用的带Irvine32配置的项目,这样就不用每次新建项目后,还要依照前述方法一步又一步地进行各个属性配置,太麻烦了,本次就使用模板,一次性创建好。
2025-12-16 14:21:58
475
原创 IA-32,堆栈操作及其代码解析
aName被分配为字符串的起始地址,假设是00404000h;字符串共 16个字节(15 个有效字符 + 1 个结束符 0),因此:第 1 个字符 'A' →00404000h第 2 个字符 'b' →00404001h...最后一个字符 0 →0040400Fh(15 个字节,地址从 00 到 0F);处理完行 1 后,汇编器的「下一个空闲地址」是00404010h—— 这就是行 2 中的值。.inc是汇编的「包含文件」,核心是「代码复用 + 统一声明」,你代码中引入后,才能直接调用。
2025-12-16 12:28:30
1089
原创 Intel汇编语言程序设计(第5版)中源代码在Visual Studio2022的汇编环境配置复现(VS2022 + Irvine32)
今天要学习的这本书的封面如下:目前这本书已经出版到第8版了,我学习使用的是第5版,翻译的作者中有一位是“罗云彬”,就是《Windows 环境下 32 位汇编语言程序设计》的作者,如下:因为相信作者的实力及翻译水平,就找来学习了。学习过程中,光看不练,相当于啥也没有学习到,同时,看到书中有作者提到他自己搭建的网站,网站上有视频,也有书籍的全套代码本书作者使用的是Visual sudio 2010版本,我目前正在使用的是Visual Studio 2022 版本,目前源代码已经在网站上下载下来了,目前就是在VI
2025-12-15 21:43:20
1324
原创 IA-32汇编:MOV r/m16,sreg指令、LAHF指令、ALIGN指令、LABEL 指令、TYPEDEF指令解析
asm.386;启用32位指令集平坦内存模型,C调用约定(可选)栈大小;========== 用TYPEDEF定义指针类型 ==========定义PBYTE为“BYTE类型的指针”别名定义PDWORD为“DWORD类型的指针”别名.DATA;========== 基于自定义指针类型创建变量 ==========字节型变量(目标数据)PBYTE类型指针,指向bVal(直接赋值地址);未初始化的PBYTE类型指针双字变量PDWORD类型指针,指向dVal.CODE。
2025-12-14 21:16:10
1008
原创 汇编:宏汇编、宏库
宏名 MACRO [参数1, 参数2,...];宏体(汇编指令)[EXITM];可选:提前退出宏ENDM在汇编语言中,宏是一种由程序员定义的“伪指令”,它不是一条 CPU 指令,而是在汇编阶段被展开为若干条真实指令的模板。;定义一个宏:显示字符INT 21HENDMINT 21H。
2025-12-13 16:47:15
406
原创 8086 CPU汇编伪操作汇总
伪操作功能.MODEL指定程序存储模式(TINY/SMALL/MEDIUM 等),简化段定义手动定义段的开始与结束(代码段、数据段、栈段).CODE简化定义代码段(配合.MODEL使用).DATA简化定义数据段(配合.MODEL使用).STACK定义栈段并指定大小(如ASSUME关联段寄存器与逻辑段(如ORG指定当前段的起始偏移地址(如ORG 100H用于 COM 程序)伪操作功能DB定义字节型数据(8 位,如DW定义字型数据(16 位,如DD定义双字型数据(32 位,如DQ定义四字型数据(64 位)
2025-12-12 22:22:21
398
原创 汇编:字符串的输入
关键知识点:程序的处理思路:1、调用int 16h读取键盘输入;2、如果不是字符:2.1 如果是退格键,从字符栈中弹出一个字符,显示字符栈中所有字符;继续执行“读取键盘输入”。2.2 如果是Enter键,向字符栈中压入0,返回。3、如果是字符键:字符入栈,显示字符栈中的所有字符,继续执行“读取键盘输入”。关键知识点:一、为什么是20H?在汇编代码中是判断输入字符是否为20H(十进制 32)是 ASCII 表中第一个 “可显示字符(空格)” 的编码,而小于20H的 ASCII 码均为。
2025-12-12 22:12:05
688
原创 汇编:改写中断例程-以int9为例、更改屏幕颜色
(Interrupt Return,中断返回)是一条用于从中断服务程序(ISR, Interrupt Service Routine)返回到被中断程序的指令。,否则无法恢复 FLAGS,可能导致中断系统异常(如 IF 标志未恢复,导致后续中断被屏蔽)。注意:在进入 ISR 时,CPU 自动将 FLAGS、CS、IP 压入堆栈;注意:8086 是实模式处理器,不支持保护模式下的特权级切换,因此。假设堆栈指针为 SP,堆栈向下增长(向低地址方向),执行。在 Intel 8086 CPU 中,
2025-12-11 21:31:53
503
原创 汇编:外设连接与中断
8086 在内存 00000H~003FFH(共 1KB)建立中断向量表,每个中断占 4 字节(2 字节偏移 + 2 字节段地址),对应中断号 0~255。中断是外设主动向 CPU 发起的 “请求”,让 CPU 暂停当前程序,优先处理外设任务(如键盘输入、串口数据接收)。8086CPU 对 PC 机键盘的处理是一个从硬件触发到软件解析的分层过程,核心依赖。四大环节,最终将键盘输入转化为程序可识别的 ASCII 码或控制信号。键盘内部的扫描芯片会实时检测按键的按下 / 松开状态,生成。IN AL, 端口号。
2025-12-10 23:12:23
1015
原创 汇编:int指令、BIOS与DOS中断、端口
中断 / 功能号功能寄存器参数要求设置光标位置bh = 显示页,dh = 行号,dl = 列号输出字符串ds:dx 指向字符串首地址,字符串以 '$' 结尾程序退出al = 返回码(通常为 0)
2025-12-10 22:36:10
879
原创 汇编:中断及处理
要让overflow(9 个字符)在 80 列的屏幕中水平居中屏幕总列数:80 列;字符串长度:9 个字符;居中列起始位置 = (80 - 9) ÷ 2 = 35.5 → 取整为 36 列(视觉上更居中)。第 36 列的偏移 = 36 列 × 2 字节 / 字符 =72(即36*2,十六进制为48H。
2025-12-09 22:08:06
931
原创 汇编:数据/代码查找表
汇编语言的是存储在内存中的连续数据集合,通过,实现 “查表取值”(无需计算,直接读取),核心优势是快速高效,尤其适合映射关系固定的场景(如 ASCII 码转换、数学函数值、状态映射等)。
2025-12-09 16:03:36
643
Intel汇编语言程序设计(第5版)中源代码在Visual Studio2022的汇编环境配置复现(VS2022 + Irvine32)
2025-12-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅