Selenium爬取会议会话列表 无法获取下拉展开项内标题问题求助
问题核心错误点
- 类名选择方法使用错误:
find_elements_by_class_name仅支持传入单个类名,你传入的item-expand-action expand是两个拼接的类名,无法匹配到元素;且该方法返回的是元素列表,直接调用click()方法会触发异常,你的空except块吞掉了所有报错,所以看不到问题提示。 - 页面源码未同步更新:你仅在页面加载完成后提取了一次静态源码生成BeautifulSoup对象,后续点击展开的动态内容没有同步到该对象中,无法解析到下拉菜单里的标题。
- 元素查找范围错误:全局查找下拉按钮无法准确定位到当前遍历行对应的触发按钮,很容易出现匹配错误。
修正后的可运行代码
from selenium import webdriver from selenium.webdriver.common.by import By import time driver = webdriver.Chrome() driver.get('https://cslide.ctimeetingtech.com/esmo2021/attendee/confcal/session/list') time.sleep(4) # 直接通过Selenium遍历元素,避免静态源码不同步的问题 product_list = driver.find_elements(By.CSS_SELECTOR, 'div.card.item-container.session') for item in product_list: # 提取当前行主标题 session_title = item.find_element(By.CSS_SELECTOR, 'h4.session-title.card-title').text.strip() print(session_title) try: # 查找当前行内的展开按钮,匹配两个类名用CSS选择器 expand_btn = item.find_element(By.CSS_SELECTOR, '.item-expand-action.expand') expand_btn.click() time.sleep(2) # 提取展开后的子标题 sub_titles = item.find_elements(By.CSS_SELECTOR, 'h4.card-title') for title in sub_titles[1:]: # 跳过已经打印过的主标题 print(title.text.strip()) except Exception: # 没有展开按钮直接跳过 pass driver.quit()
内容的提问来源于stack exchange,提问作者Void S
相关产品推荐
相关产品推荐

