Selenium WebDriver运行时触发TypeError问题求助
解决Selenium爬取Python官网的TypeError问题
你的代码触发TypeError的核心原因是Selenium 4.x及以上版本已经彻底移除了find_elements_by_css_selector这类旧版元素定位方法,课程里的代码应该是基于Selenium 3.x编写的,所以直接运行会报错。另外你代码里的CSS选择器存在多余空格(.event- widget),这也可能导致元素定位失败。
修正后的完整代码
from selenium import webdriver from selenium.webdriver.common.by import By chrome_options = webdriver.ChromeOptions() chrome_options.add_experimental_option("detach", True) driver = webdriver.Chrome(options=chrome_options) driver.get("https://www.python.org/") # 替换旧版定位方法,同时修正CSS选择器的多余空格 event_times = driver.find_elements(By.CSS_SELECTOR, ".event-widget time") event_names = driver.find_elements(By.CSS_SELECTOR, ".event-widget li a") events = {} for n in range(len(event_times)): events[n] = { "time": event_times[n].text, "name": event_names[n].text, } print(events) driver.quit()
关键修改点
- 用
driver.find_elements(By.CSS_SELECTOR, "选择器内容")替代旧的driver.find_elements_by_css_selector("选择器内容"),这是Selenium 4.x要求的标准定位方式 - 清理CSS选择器中的多余空格,确保
.event-widget是连续的正确类名
如果运行后还是有问题,可以检查你的Selenium版本,执行pip show selenium查看版本号,确保是4.x及以上版本,若不是则执行pip install --upgrade selenium升级。
内容的提问来源于stack exchange,提问作者TheFakeLex
相关产品推荐
相关产品推荐

