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

Python Selenium实现Flickr图片下载时TimeoutException不生效问题

问题原因

  1. 使用的CSS选择器过于僵化:#allsizes-photo > img:nth-child(1)仅匹配该容器下的第一个img子元素,部分页面中目标img是第二个子元素,自然无法匹配到元素。
  2. 你误以为TimeoutException未触发,实际上是异常分支仅写了pass,没有任何日志提示,所以无法感知异常是否真的触发,程序会直接跳过当前链接继续执行。

修复方案

  1. 替换CSS选择器为更通用的规则,不需要限制img的序号,直接匹配#allsizes-photo容器下的img元素即可:
webelement = WebDriverWait(driver,5).until(EC.presence_of_element_located((By.CSS_SELECTOR,'#allsizes-photo img')))
  1. 给TimeoutException分支增加日志输出,方便排查问题:
except TimeoutException as e:
    logging.debug(f"当前图片页加载超时,无法定位图片元素,跳过链接:{image_link}")
  1. 可选优化:给requests下载部分也增加异常捕获,避免网络波动导致程序中断:
for link in image_links:
    try:
        response = requests.get(link, timeout=10)
        response.raise_for_status()
        file_path = os.path.join(tag,os.path.basename(link))
        with open(file_path, 'wb') as file:
            for chunk in response.iter_content(100000):
                file.write(chunk)
    except Exception as e:
        logging.debug(f"下载图片{link}失败:{str(e)}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:36:00