You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Selenium下载谷歌搜索全尺寸图片的问题求助

谷歌图片全尺寸原图抓取方案

你当前拿到低清图的核心原因是点击缩略图后立刻抓取img属性,此时页面尚未完成全尺寸原图的加载,抓取到的是预渲染的缩略图缓存。

修复要点

  • 点击缩略图后添加显式等待,跳过base64格式的缩略图缓存,直到加载出真实的http/https格式原图链接
  • 优先获取img元素的src属性,若为缩略图格式再尝试获取data-src等存储原图地址的自定义属性
  • 避免使用高度依赖页面结构的绝对xpath,改用更稳定的元素定位规则

修正后代码

import os
import time
import urllib.request
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 初始化浏览器(可替换为你使用的浏览器驱动)
browser = webdriver.Chrome()
name = "你的搜索关键词" # 替换为实际搜索关键词
barcode = "保存文件名" # 替换为实际文件命名规则

# 打开谷歌搜索
browser.get('https://www.google.com/')
search = browser.find_element(By.NAME, 'q')
search.send_keys(name, Keys.ENTER)

# 切换到图片搜索页
elem = browser.find_element(By.LINK_TEXT, 'Images')
elem.click()

# 点击第一张搜索结果缩略图
first_thumb = WebDriverWait(browser, 10).until(
    EC.element_to_be_clickable((By.XPATH, '//*[@id="islrg"]/div[1]/div[1]/a[1]/div[1]/img'))
)
first_thumb.click()

# 等待右侧预览区原图加载完成,跳过base64缩略图
preview_img = WebDriverWait(browser, 10).until(
    EC.presence_of_element_located((By.XPATH, '//*[@id="Sva75c"]//div[contains(@class, "tvh9oe")]//img'))
)
# 循环等待直到获取到非缩略图域名的真实原图链接
while True:
    src = preview_img.get_attribute('src')
    if src and src.startswith(('http://', 'https://')) and 'encrypted-tbn0.gstatic.com' not in src:
        break
    time.sleep(0.5)

# 创建下载目录
try:
    os.mkdir('downloads')
except FileExistsError:
    pass

# 下载原图
try:
    urllib.request.urlretrieve(src, os.path.join('downloads', f'{barcode}.jpg'))
    print(f"下载成功,文件路径:downloads/{barcode}.jpg")
except Exception as e:
    print(f"下载失败:{str(e)}")

browser.quit()

注意事项

  • 谷歌页面结构会不定期更新,若定位失效可自行调整xpath规则,优先通过父容器的稳定class属性定位元素
  • 可根据网络情况调整等待时长,避免因加载过慢导致抓取失败

内容的提问来源于stack exchange,提问作者eptys

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 18:36:03