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

无法从PROGRAMS/MAJORS下拉框爬取内容,求助解决方法

解决PROGRAMS/MAJORS下拉框内容爬取问题

你的代码只定位到了下拉框的外层容器(ID为programs的元素),这个元素的文本就是标题“PROGRAMS/MAJORS”,而实际的专业详情被隐藏在下拉框展开后的子元素里。要获取这些内容,需要先触发下拉框展开,再定位到内部的内容元素。

修改后的代码如下:

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

# Specify the path to your WebDriver executable
driver_path = 'C:\\Users\\Lenovo\\Desktop\\drivery\\chromedriver.exe'

# Instantiate a browser driver
driver = webdriver.Chrome(driver_path)

# Get the webpage
driver.get('https://nces.ed.gov/collegenavigator/?id=222178')

try:
    # 等待下拉框标题元素可点击,然后点击展开下拉内容
    dropdown_title = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.ID, "programs"))
    )
    dropdown_title.click()

    # 等待专业详情区域加载完成,定位到内部的内容容器
    programs_container = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, "#programs .collapse-inner"))
    )

    # 获取所有专业详情文本
    programs_majors = programs_container.text

    # 打印结果
    print(programs_majors)
finally:
    # 确保浏览器关闭
    driver.quit()

关键修改点:

  • 使用element_to_be_clickable等待下拉框标题可点击,执行点击操作展开隐藏内容
  • 定位到下拉框内部的.collapse-inner容器,该容器包含所有专业详情文本
  • 用try...finally块确保无论执行是否出错,浏览器都会正常关闭

如果你的Selenium版本为4.x及以上,建议改用Service类管理Driver,代码调整如下:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

service = Service('C:\\Users\\Lenovo\\Desktop\\drivery\\chromedriver.exe')
driver = webdriver.Chrome(service=service)

# 后续逻辑与上述代码一致...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 05:32:25