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

如何通过Python+Selenium点击‘保存图片’按钮下载图片

问题:无法通过Selenium点击“保存图片”按钮下载气象图

我用Python+Selenium尝试点击页面上的「保存图片」按钮下载对应图片,已经搞定Cookie弹窗的关闭,但始终点不了这个按钮。(按钮截图:保存图片按钮)

我尝试通过ID、类名定位按钮,但系统一直提示按钮不可点击,我的代码如下:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By


driver = webdriver.Edge()

mateo = "https://www.meteoblue.com/en/weather/14-days/ottawa_canada_6094817"

driver.get(mateo)

driver.implicitly_wait(10)

driver.find_element(By.CLASS_NAME, "form-group").click()

#HREF link
link = "http://my.meteoblue.com/visimage/meteogram_14day_hd?download=1&look=KILOMETER_PER_HOUR%2CCELSIUS%2CMILLIMETER&apikey=5838a18e295d&temperature=C&windspeed=kmh&precipitationamount=mm&winddirection=3char&city=Ottawa&iso2=ca&lat=45.4112&lon=-75.6981&asl=71&tz=America%2FToronto&lang=en&ts=1686662836&sig=171b0d835cf2ae17a032512cf41b1244"

driver.find_element(By.CSS_SELECTOR, "glyph download").click()

解决方法

问题分析

  1. CSS选择器错误:你写的"glyph download"不符合CSS语法,类名选择器需要用.前缀,多个类名直接连写,正确应为.glyph.download。
  2. 未确保元素可交互:隐式等待无法精准判断元素是否处于可点击状态,容易出现元素已加载但不可交互的情况。
  3. 已有直接下载链接,无需通过点击按钮实现,直接请求更高效。

方案一:修正Selenium点击逻辑

用显式等待确保元素可点击后再操作:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

driver = webdriver.Edge()
target_url = "https://www.meteoblue.com/en/weather/14-days/ottawa_canada_6094817"
driver.get(target_url)

# 显式等待Cookie弹窗并关闭
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CLASS_NAME, "form-group"))).click()

# 显式等待保存图片按钮,确认可点击后点击
save_button = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, ".glyph.download"))
)
save_button.click()

# 可根据需求添加下载文件的后续处理逻辑

方案二:直接通过requests下载图片(推荐)

既然已经拿到了图片的直接下载链接,直接用requests库请求保存即可,无需操作浏览器:

import requests

download_link = "http://my.meteoblue.com/visimage/meteogram_14day_hd?download=1&look=KILOMETER_PER_HOUR%2CCELSIUS%2CMILLIMETER&apikey=5838a18e295d&temperature=C&windspeed=kmh&precipitationamount=mm&winddirection=3char&city=Ottawa&iso2=ca&lat=45.4112&lon=-75.6981&asl=71&tz=America%2FToronto&lang=en&ts=1686662836&sig=171b0d835cf2ae17a032512cf41b1244"

# 发送请求并保存图片
response = requests.get(download_link)
with open("渥太华14天气象图.png", "wb") as img_file:
    img_file.write(response.content)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 20:05:27