Python网页爬取报错求助:chromedriver路径与API弃用问题
问题分析与解决办法
你的代码存在两个核心问题:
- ChromeDriver路径错误:教程里的
/usr/lib/chromium-browser/chromedriver是Linux系统的路径,你使用的是Windows系统,这个路径根本不存在,导致系统找不到驱动文件。 - Selenium版本兼容问题:新版Selenium已经废弃了直接把驱动路径传给
webdriver.Chrome()的写法,必须用Service类来管理驱动服务。
解决步骤
下载匹配版本的ChromeDriver
- 打开Chrome浏览器,在地址栏输入
chrome://version/查看你的Chrome版本 - 下载和Chrome版本一致的Windows版ChromeDriver,解压后得到
chromedriver.exe文件 - 将
chromedriver.exe放到一个容易定位的文件夹,比如C:\chromedriver\chromedriver.exe
- 打开Chrome浏览器,在地址栏输入
修改代码适配新版Selenium
替换原有的驱动初始化逻辑,同时修正Flipkart的URL(原URL混入了HTML标签,会导致无法正常访问):
from selenium import webdriver from selenium.webdriver.chrome.service import Service # 新增导入Service类 from bs4 import BeautifulSoup import pandas as pd # 用Service指定ChromeDriver的实际路径 service = Service("C:\\chromedriver\\chromedriver.exe") # 替换成你自己的驱动路径 driver = webdriver.Chrome(service=service) products = [] # 存储产品名称 prices = [] # 存储产品价格 ratings = [] # 存储产品评分 # 修正后的Flipkart目标页面URL driver.get("https://www.flipkart.com/laptops/~buyback-guarantee-on-laptops-/pr?sid=6bo%2Cb5g&uniq") content = driver.page_source soup = BeautifulSoup(content, "html.parser") # 指定解析器,避免无默认解析器的警告 for a in soup.findAll('a', href=True, attrs={'class':'_31qSD5'}): name = a.find('div', attrs={'class':'_3wU53n'}) price = a.find('div', attrs={'class':'_1vC4OE _2rQ-NK'}) rating = a.find('div', attrs={'class':'hGSR34 _2beYZw'}) # 增加元素存在判断,避免页面结构变化导致代码崩溃 if name and price and rating: products.append(name.text) prices.append(price.text) ratings.append(rating.text) df = pd.DataFrame({'Product Name':products,'Price':prices,'Rating':ratings}) df.to_csv('products.csv', index=False, encoding='utf-8') driver.quit() # 执行完毕后关闭浏览器进程
额外提示
- 路径中的反斜杠需要写两个
\\,或者改用正斜杠/ - 新增的
driver.quit()可以避免Chrome后台进程残留 - 增加元素存在判断,能提升代码在页面结构变动时的稳定性
内容的提问来源于stack exchange,提问作者Xiaolong Guo
相关产品推荐
相关产品推荐

