Selenium Python遍历电影列表异常:无法选中首个元素
解决Selenium遍历电影列表从第一部到最后一部的问题
嘿,我来帮你搞定这个遍历电影的问题!先看看你代码里的核心问题:你现在只拿到了单个电影元素,而且点击后没回到列表页,自然没法按顺序遍历所有电影。下面是修改后的完整代码,我会一步步给你讲清楚改动点:
from selenium import webdriver import time URL = 'https://www.cineplanet.cl/peliculas' # 更精准定位"加载更多"按钮,避免误点其他按钮 XPATH_VER_MAS_PELICULAS = '//button[contains(text(), "Ver más películas")]' CLASS_CARTELERA = 'movie-info-details' # 用相对路径定位按钮,确保只在当前电影条目下查找 XPATH_COMPRAR = './/div[@class="movie-info-details--wrapper"]/div[@class="movie-info-details--first-button-wrapper"]/button' PATH = 'C:\\Program Files\\chrome-driver\\chromedriver.exe' driver = webdriver.Chrome(PATH) driver.get(URL) def available_movies(): try: # 关键:获取所有电影条目,而不是单个 all_movies = driver.find_elements_by_class_name(CLASS_CARTELERA) print(f"一共找到{len(all_movies)}部电影") # 从第一部开始逐个遍历 for idx, movie in enumerate(all_movies): print(f"正在处理第{idx+1}部电影") # 找到当前电影的操作按钮 buy_btn = movie.find_element_by_xpath(XPATH_COMPRAR) buy_btn.click() # 等待详情页加载,然后返回列表页 time.sleep(3) driver.back() time.sleep(2) # 等列表页加载稳定,避免下一次找不到元素 except Exception as e: print(f"操作时出了点小问题:{str(e)}") # 先把所有电影加载出来 while True: try: ver_mas_btn = driver.find_element_by_xpath(XPATH_VER_MAS_PELICULAS) ver_mas_btn.click() time.sleep(5) except: print("所有电影都加载完成啦") break # 开始按顺序遍历电影 available_movies() time.sleep(2) driver.quit()
核心改动说明:
- 获取所有电影条目:把
driver.find_element_by_class_name改成driver.find_elements_by_class_name,这样就能拿到页面上所有的电影元素列表,而不是只拿第一个。 - 相对路径定位按钮:给
XPATH_COMPRAR开头加了.,变成相对路径,确保只在当前电影元素下找按钮,不会误点其他电影的按钮。 - 返回列表页:点击进入详情页后,用
driver.back()回到电影列表,这样才能继续处理下一部电影。 - 精准定位加载按钮:原XPATH匹配所有按钮,容易误点,改成匹配带"Ver más películas"文本的按钮,避免出错。
额外小建议:
如果想让代码更稳定,尽量用WebDriverWait显式等待代替固定的time.sleep,比如等待元素可点击再操作:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # 示例:等待按钮可点击 buy_btn = WebDriverWait(movie, 10).until( EC.element_to_be_clickable((By.XPATH, XPATH_COMPRAR)) ) buy_btn.click()
这样能避免因为页面加载慢导致的元素找不到问题~
内容的提问来源于stack exchange,提问作者nilsoviani
相关产品推荐
相关产品推荐

