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

Selenium运行报TimeoutException异常无法获取番剧标题该如何修复

修复方案

问题根源

触发超时的核心原因是By.CLASS_NAME定位规则不支持传入带空格的多类名组合,只能传入单个类名,你的代码里三次类名定位都用了多类名拼接的字符串,所以永远找不到匹配元素,和超时时间长短无关。

具体修复点

  • 所有多类名定位改用By.CSS_SELECTOR,类名前加.,空格替换为.即可匹配同时包含所有类的元素
  • 适配高版本Selenium的元素定位语法,弃用已经被移除的find_elements_by_class_name这类旧API
  • 增加页面加载完成后滚动到底部的逻辑,触发懒加载的番剧内容渲染(该站点番剧列表是懒加载的,不滚动不会渲染全部内容)

修复后完整代码

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

url ='https://animelon.com/'

PATH = 'C:\Program Files (x86)\chromedriver.exe'
# 高版本Selenium可以不用手动指定chromedriver路径,会自动匹配,如果你是旧版本保留原写法即可
driver = webdriver.Chrome()
driver.get(url)
driver.maximize_window()

try:
    # 滚动到底部触发懒加载
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(2)
    # 改用CSS_SELECTOR匹配多类名
    section = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, '.row.ng-show-toggle-slidedown.series-content-container'))
    )

    anime = section.find_elements(By.CSS_SELECTOR, '.col-lg-3.col-md-4.col-sm-6.col-xs-12.mini-previews.ng-scope')

    for show in anime:
        header = show.find_element(By.CSS_SELECTOR, '.anime-name.ng-binding')
        print(header.text)

finally:
    driver.quit()

补充说明

如果运行时还是有部分内容没加载出来,可以增加滚动次数或者延长sleep的时间,确保所有懒加载资源都渲染完成再定位元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 17:39:04