Selenium获取图片src返回Base64而非URL该如何解决
Selenium谷歌图片批量自动下载src属性异常处理方案
我基于Selenium开发谷歌图片批量自动下载工具时,发现网上公开的多数实现方案要么运行效率极低,要么无法正常跑通。
问题描述
核心异常表现为:调用element.get_attribute('src')提取图片资源地址时,接口返回的是图片的Base64编码,但在Chrome开发者工具中用对应XPath定位元素时,该img标签的src属性展示为正常的HTTP链接。
初始代码
for i in range(n): element = self.wait.until( EC.presence_of_element_located((By.XPATH, '//*[@id="Sva75c"]/div/div/div[3]/div[2]/c-wiz/div/div[1]/div[1]/div[2]/div/a/img'))) src = element.get_attribute('src') print(element) self.download_file(src,keyword)
排查与最终实现
- 优先尝试了Base64转存方案:没有走常规的requests请求URL下载的路径,而是直接将拿到的Base64编码转为图片格式存储,实际运行速度比URL下载方案快很多。
- 根因定位:该异常由谷歌图片页面的动态脚本逻辑导致,和代码本身逻辑无关,部分场景下src属性会正常返回URL,仅适配Base64的代码会直接报错。
- 最终兼容方案:编写两套分支处理逻辑,分别适配src返回URL和返回Base64的两种场景,覆盖所有动态渲染情况。
内容的提问来源于stack exchange,提问作者Gustavo Marinho
相关产品推荐
相关产品推荐

