如何使用Python+Selenium从网站抓取高质量图片?
一、画质下降的核心原因
Shein这类电商网站会为页面展示提供多分辨率图片版本:你直接从页面href或img标签获取的往往是低清缩略图(用于快速加载页面),并非原图,所以下载后画质会大幅下降。解决的关键是找到高清原图的链接。
二、获取高清原图的具体方法
修改图片URL参数:
观察Shein的图片链接结构,通常会带有尺寸标识(比如_w200_h200、thumb等),去掉这类参数或替换为更大尺寸的参数,就能得到高清图。举个例子:
页面缩略图链接:https://shein-img.shein.com/sheinweb01/pdm-product-pic/clothing/2023/05/18/14155075_20230518152403542_w200_h200.jpg
修改为无尺寸参数的链接:https://shein-img.shein.com/sheinweb01/pdm-product-pic/clothing/2023/05/18/14155075_20230518152403542.jpg,大概率就是原图。提取页面内置JSON数据:
打开浏览器开发者工具(F12),查看页面的script标签,很多电商会把商品的高清图片列表放在window.__INITIAL_STATE__这类全局变量中,里面的链接都是高清版本。用BeautifulSoup解析页面后提取该JSON,就能直接拿到所有高清图链接。模拟浏览器抓取动态加载的高清图:
若页面是动态渲染的,用Playwright或Pyppeteer启动无头浏览器,加载页面后,从浏览器的网络请求中过滤图片类型的请求,找到分辨率最高的链接;也可通过浏览器DOM直接获取高清图的src(部分页面会在滚动/点击时加载高清图)。
三、实用工具库推荐
- 静态页面解析:
requests+BeautifulSoup/lxml,用于抓取页面内的高清链接,再用requests直接下载(开启stream=True模式避免内存占用过高)。 - 动态页面处理:
Playwright(支持多浏览器,API友好)、Pyppeteer(基于Chrome的无头浏览器),能模拟真实浏览器加载,获取到浏览器实际加载的高清图。
四、无需直接下载即可使用图片的方法
- 直接引用高清URL:拿到高清图链接后,在你的应用或项目中直接使用该URL(注意:Shein图片有版权,未经授权不可商用)。
- 流式读取处理:用
requests.get(hd_url, stream=True)获取图片流,直接传递给图片处理库(比如PIL.Image.open(response.raw)),无需保存到本地文件,就能直接进行裁剪、展示等操作。
注意事项
爬取电商网站图片前,请务必确认网站的robots.txt规则及相关版权条款,避免侵权风险。
内容的提问来源于stack exchange,提问作者NullF3alty

