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

Selenium问题:无法定位并点击指定动漫标题可点击元素

问题:无法定位并点击MyAnimeList中匹配输入的动漫标题链接

需求:

  • 获取目标网站上的全部动漫
  • 选中与输入变量名称一致的动漫
  • 点击该动漫标题跳转至详情页进行数据爬取

遇到的问题:所有动漫标题仅共享相同类名且包含<strong>标签,尝试用XPath定位包含输入文本的<a>标签失败。


解决思路

  • 放弃易失效的绝对XPath,改用更稳定的元素属性定位
  • 修正XPath匹配逻辑:动漫标题文本实际嵌套在<strong>标签内,需定位包含目标文本的<strong>的父级<a>标签
  • 用显式等待替代固定休眠,适配页面加载速度,避免元素未加载完成导致的定位失败
  • 增加异常处理,确保浏览器资源正常释放

修正后的代码

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
import time

# 获取用户输入的动漫名称
anime_name = input("Inserisci l'anime che cerchi:  ")

# 初始化Chrome浏览器
PATH = r"C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(PATH)

try:
    driver.get("https://myanimelist.net/anime.php")
    print(driver.title)

    # 等待并关闭Cookie弹窗
    WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.CLASS_NAME, "css-47sehv"))
    ).click()

    # 等待搜索框加载完成,输入关键词并提交
    search_box = WebDriverWait(driver, 10).until(
        EC.visibility_of_element_located((By.NAME, "q"))
    )
    search_box.click()
    search_box.send_keys(anime_name)
    search_box.send_keys(Keys.RETURN)

    # 定位匹配的动漫标题链接:找到包含目标文本的strong标签,再取其父级a标签
    target_link = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.XPATH, f"//strong[contains(text(), '{anime_name}')]/parent::a"))
    )
    target_link.click()

    # 此处可添加详情页数据爬取逻辑
    print("已成功跳转到动漫详情页")

finally:
    # 等待后关闭浏览器,可根据需求调整等待时间或直接关闭
    time.sleep(10)
    driver.quit()

关键调整说明

  1. 显式等待优化:使用WebDriverWait等待元素可点击/可见,比固定time.sleep()更可靠,能自动适配页面加载速度
  2. XPath逻辑修正:原代码错误地直接匹配<a>标签文本,实际标题文本在<strong>子标签内,修正后的XPath精准定位到可点击的父级<a>链接
  3. 搜索框定位优化:改用By.NAME, "q"定位搜索框,相比绝对XPath,不受页面结构小变动影响,稳定性更高
  4. 异常处理机制:try...finally确保无论代码是否出错,浏览器都会正常关闭,避免资源泄漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 18:50:26