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

使用Python爬取Yelp评论无有效数据,请求技术排查

Yelp评论爬取问题排查方案

核心问题定位

无有效数据、行数异常(1384行vs目标47条)、日期混乱,本质是HTML选择器定位错误,导致抓取了无关DOM元素,或是循环逻辑错误引发重复/错误提取。以下是针对性排查和修正步骤:


1. 锁定评论容器的精准选择器

Yelp单条评论有独立的外层容器,若选择器过于宽泛(比如直接匹配所有带text的类),会把页面其他文本(如商家介绍、侧边栏提示)也纳入抓取范围,直接导致行数暴增。

  • 操作:打开目标Yelp页面,按F12调出开发者工具,找到单条评论的最外层父元素,复制其唯一CSS选择器(比如div.review__09f24__oHr9V,具体类名需以当前页面结构为准)。
  • 验证:在开发者工具控制台输入$$('你的评论容器选择器').length,返回值应为47,若不符则说明选择器错误。

2. 修正评论内容与日期的选择器

评论内容

Yelp的评论正文通常在.raw__09f24__T4Ezm或.comment__09f24__gu0rG类下,若选择上层容器,会把评论内的点赞按钮文本、回复提示等无关内容抓进来,导致数据无效。

日期

评论日期一般在.review-date__09f24__ybKkF或.css-chan6m类下,注意区分「评论发布日期」和「商家开业日期」「用户互动日期」,错选其他日期元素会直接导致日期列混乱。

  • 验证:在单个评论容器内测试选择器,比如container.querySelector('你的日期选择器').textContent,确认返回的是正确的评论日期。

3. 调整循环逻辑,确保数据一一对应

如果代码是全局抓取所有文本/日期元素,再合并成DataFrame,会因两类元素数量不匹配,触发Pandas的自动填充机制,导致行数异常。正确逻辑应该是先遍历每个评论容器,再在容器内提取对应的数据:

# 错误示例(全局抓取,易出现数量不匹配)
reviews = driver.find_elements(By.CSS_SELECTOR, '.text__09f24__2tZKC')
dates = driver.find_elements(By.CSS_SELECTOR, '.css-chan6m')

# 正确示例(容器内提取,保证数据对应)
review_containers = driver.find_elements(By.CSS_SELECTOR, 'div.review__09f24__oHr9V')
data = []
for container in review_containers:
    # 仅在当前评论容器内查找元素
    review_text = container.find_element(By.CSS_SELECTOR, '.raw__09f24__T4Ezm').text
    review_date = container.find_element(By.CSS_SELECTOR, '.review-date__09f24__ybKkF').text
    data.append({'评论内容': review_text, '评论日期': review_date})

4. 处理Yelp的动态加载

Yelp部分评论需要滚动页面才会加载,若未处理滚动,会抓取到空白占位元素或重复数据,导致内容无效、行数异常。可添加滚动加载逻辑:

import time

# 滚动加载所有评论
last_height = driver.execute_script("return document.body.scrollHeight")
while True:
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(2)  # 等待页面加载,可根据网络情况调整时长
    new_height = driver.execute_script("return document.body.scrollHeight")
    if new_height == last_height:
        break
    last_height = new_height

5. 输出前校验数据

在转为DataFrame并导出CSV前,先做基础校验:

print(len(data))  # 应输出47,确认抓取到的评论数量正确
print(data[:3])   # 查看前3条数据,确认内容和日期是否正常

若数量不符,回到选择器和循环逻辑排查;若数据内容错误,调整对应元素的选择器。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 13:00:10