浏览器与requests请求获取的HTML中img的src属性值不一致问题
问题原因解答
核心差异来源:静态请求无法获取JS动态生成的内容
你用requests.get()发起请求拿到的是网站返回的初始静态HTML源码,prnt.sc站点的图片base64内容并没有直接写在静态源码里:页面被浏览器加载后,会执行内置的JS脚本,完成资源拉取、内容计算之后,才会把base64格式的图片地址动态替换到对应img标签的src属性上。
你使用的lxml仅具备静态HTML文本的解析能力,没有浏览器的JS执行环境,无法触发动态内容的替换逻辑,最终只能提取到静态源码里预设的占位src值,也就是你实际拿到的页面URL。
相关知识点补充
- lxml是纯XML/HTML解析工具,仅能处理静态文本的结构解析和内容提取,不支持JS执行、资源加载、页面渲染等浏览器具备的能力,只能提取静态源码中真实存在的内容
- 当代多数站点的非静态内容(包括异步加载的资源、JS计算生成的内容)都不会嵌入初始HTML返回,必须模拟浏览器的完整执行流程才能获取到对应内容
解决方向
你可以根据自己的需求选择以下两种方案:
- 改用带JS渲染能力的工具发起请求,比如Selenium、Playwright等浏览器自动化工具,等待页面加载完成后再提取
img标签的src属性 - 抓包分析prnt.sc加载图片的接口规则,直接调用对应接口获取图片数据,跳过前端页面解析环节
内容的提问来源于stack exchange,提问作者F1rools22
相关产品推荐
相关产品推荐

