Python Selenium 获取class为lien-jv topic-title元素的title无输出如何解决
问题排查及解决方法
核心错误点
- CSS选择器语法错误
你写的lien-jv topic-title不符合CSS选择器规则:- 类名选择器必须加前缀
. - 匹配同时拥有两个类的同一个元素,类名之间不能加空格,空格代表匹配前者的后代节点中类为后者的元素,正确写法是
.lien-jv.topic-title
- 类名选择器必须加前缀
- 元素属性获取方式错误
Selenium的WebElement对象没有直接的.title属性,获取元素标签的title属性需要调用get_attribute('title')方法。
修正后的可运行代码
import os 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 os.system('cls') # 若使用Selenium 4+,可以直接省略executable_path,会自动匹配本机安装的Chrome对应驱动 browser = webdriver.Chrome(executable_path=r"C:\Users\Desktop\Webdriver\chromedriver.exe") browser.get('https://www.jeuxvideo.com/forums/0-51-0-1-0-1-0-blabla-18-25-ans.htm') # 显式等待替代固定sleep,最多等10秒直到目标元素加载完成,稳定性更高 try: WebDriverWait(browser, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, '.lien-jv.topic-title')) ) except: print("页面加载超时,未找到目标元素") browser.quit() exit() list_topic_main = browser.find_elements(By.CSS_SELECTOR, '.lien-jv.topic-title') for x in list_topic_main: print(x.get_attribute('title')) browser.close() os.system('pause')
额外排查思路
如果修改后还是取不到内容,可以先输出len(list_topic_main)检查是否匹配到了元素:
- 若长度为0,说明页面可能有反爬机制、需要登录才能查看内容、或者元素选择器还是不对,可以打印
browser.page_source查看当前拿到的页面源码确认元素是否存在 - 若长度大于0,说明属性获取逻辑有问题,可以先打印
x.get_attribute('outerHTML')查看匹配到的元素结构确认属性名是否正确
内容的提问来源于stack exchange,提问作者Meriole
相关产品推荐
相关产品推荐

