如何使用Selenium爬取Influenster商品页面的星级评分?
Influenster商品评论星级爬取方案
针对你提供的商品页面,星级评分是通过填充状态的星星图标实现的,没有直接的数值文本,但可以通过统计已填充的星星数量来获取星级。以下是具体修改方案:
核心思路
页面中的每颗星星对应一个DOM元素,已填充的星星会带有特定类名(比如filled)。定位到单条评论下的所有星星元素后,统计其中带filled类的数量,就是该评论的星级评分。
修改后的代码片段
在你的循环逻辑中添加星级获取代码:
for review in reviews: # 获取星级:统计带filled类的星星数量 star_elements = review.find_elements(By.CSS_SELECTOR, ".stars .star") stars = sum(1 for star in star_elements if 'filled' in star.get_attribute('class')) item={ 'stars': stars, 'username': review.find_element(By.XPATH, ".//a[contains(@class,'name')]").text, 'userurl':review.find_element(By.XPATH, ".//a[contains(@class,'name')]").get_attribute("href"), 'title': 'NA', # 其他字段按需启用 # 'review_text':review.find_element(By.XPATH, ".//div[contains(@class,'review-text')]").text, # 'permalink': 'NA', # 'date':curr_date, # 'subproduct name': 'NA', # 'subproduct link': 'NA', } item_list.append(item) print(item_list)
补充说明
- 注意替换旧写法
find_element_by_xpath为find_element(By.XPATH, ...)——新版本Selenium已弃用旧API,建议统一使用新写法。 - 若页面星星的填充类名不是
filled,可通过浏览器开发者工具(F12)查看星星元素的class属性,调整判断条件。 - 若遇到评论加载不完全的情况,可在获取星星前增加短暂等待,或针对单条评论内的星星元素做显式等待。
内容的提问来源于stack exchange,提问作者user16508648
相关产品推荐
相关产品推荐

