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

Python使用Selenium定位评论日期 排除回复日期的实现方法

实现Selenium仅抓取用户评论日期、过滤商家回复日期的方法

问题背景

当前使用如下代码定位页面日期标签时,会同时获取到用户评论、商家回复两类内容的<time>标签,无法满足仅提取用户评论发布日期的需求:

date_ref = driver.find_elements(By.TAG_NAME, "time")

两类标签的源码特征如下:

  • 用户评论对应time标签:
<time datetime="2022-02-03T06:11:02.000Z" class="" data-service-review-date-time-ago="true" title="Thursday, 3 February 2022, 05:11:02 pm">3 Feb 2022</time>
  • 商家回复对应time标签:
<time datetime="2022-02-07T03:31:52.999Z" 
class="typography_typography__QgicV typography_bodysmall__irytL typography_color-gray-6__TogX2 typography_weight-regular__TWEnf typography_fontstyle-normal__kHyN3 styles_replyDate__Iem0_" data-service-review-business-reply-date-time-ago="true" title="Monday, 7 February 2022, 02:31:52 pm">7 Feb 2022</time>

核心定位逻辑调整

两类标签的专属属性有明确区分,直接通过CSS选择器匹配用户评论的专属属性即可,从定位源头过滤无关元素,无需二次遍历判断,执行效率更高。

推荐实现代码

from selenium.webdriver.common.by import By

# 通过用户评论time标签的专属data属性精准定位,完全排除商家回复标签
date_ref = driver.find_elements(By.CSS_SELECTOR, 'time[data-service-review-date-time-ago="true"]')

该选择器的匹配规则是:仅选中标签名为time、且带有属性data-service-review-date-time-ago="true"的元素,商家回复的time标签没有该属性,会被直接过滤。

备选过滤方案

如果有特殊场景需要先获取所有time标签再筛选,可以通过判断商家回复的专属属性做过滤,示例代码如下:

all_time_tags = driver.find_elements(By.TAG_NAME, "time")
user_date_list = []
for time_tag in all_time_tags:
    # 判定当前标签是否属于商家回复日期
    is_reply_date = time_tag.get_attribute("data-service-review-business-reply-date-time-ago") is not None
    if not is_reply_date:
        user_date_list.append(time_tag)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:09:29