基于Selenium的汽车评论多页爬取及星级指标提取求助
解决方案:爬取Cardekho全页汽车评论及星级
问题分析
现有代码仅能爬取单页评论,无法实现1-16页的批量爬取,且未提取评论星级;分页定位使用了冗长且易失效的CSS选择器,导致定位异常。
解决步骤
1. 提取评论星级
页面中每条评论的星级通过rating-static rating-XX类标识(XX为星级×10,例如rating-40对应4星),可通过解析该类名中的数字值计算星级。
2. 实现多页爬取
- 用
WebDriverWait等待元素加载,避免页面未渲染完成导致的定位失败 - 简化分页逻辑:直接定位「下一页」按钮遍历页面,同时处理可能出现的Cookie同意弹窗
- 循环遍历16页,每页爬取完成后切换到下一页,直到所有页面处理完毕
完整代码
# 先安装依赖 # pip install selenium # pip install webdriver-manager 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 from webdriver_manager.chrome import ChromeDriverManager # 初始化浏览器 driver = webdriver.Chrome(ChromeDriverManager().install()) driver.maximize_window() base_url = "https://www.cardekho.com/user-reviews/maruti-alto-800" driver.get(base_url) try: # 处理Cookie弹窗(无弹窗则跳过) cookie_btn = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.CSS_SELECTOR, "#wzrk-confirm")) ) cookie_btn.click() except: pass # 遍历1-16页 for page_num in range(1, 17): print(f"===== 正在爬取第 {page_num} 页 =====") # 等待评论区域加载完成 WebDriverWait(driver, 10).until( EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".contentspace")) ) # 获取当前页所有评论 reviews = driver.find_elements(By.CSS_SELECTOR, ".contentspace") for review in reviews: # 提取标题和评论内容 title = review.find_element(By.CSS_SELECTOR, "h3 > a").text desc = review.find_element(By.CSS_SELECTOR, "p").text # 提取星级 rating_element = review.find_element(By.CSS_SELECTOR, ".rating-static") rating_class = rating_element.get_attribute("class") rating = int(rating_class.split("rating-")[-1]) / 10 print(f"标题: {title}") print(f"星级: {rating}★") print(f"评论: {desc}\n") # 最后一页无需点击下一页 if page_num < 16: try: next_btn = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.CSS_SELECTOR, ".next.page-numbers")) ) next_btn.click() except: print(f"第 {page_num+1} 页加载失败,跳过") continue # 关闭浏览器 driver.quit()
代码说明
- 用
WebDriverWait替代直接定位,确保元素加载完成后再操作,彻底解决定位异常问题 - Cookie弹窗做了容错处理,避免因弹窗阻断后续操作
- 星级提取通过解析class属性实现,比定位图标元素更稳定
- 分页逻辑依赖「下一页」按钮,避免页码按钮动态变化导致的定位失效
内容的提问来源于stack exchange,提问作者HJKWON
相关产品推荐
相关产品推荐

