无法从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
相关产品推荐
相关产品推荐

