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

嵌套循环爬虫爬取社媒帖子点赞评论出现值重复问题求助

问题根源
  • 核心错误是使用了嵌套循环结构:外层遍历点赞元素,内层遍历评论元素,第一个点赞元素就会匹配所有20条评论元素,counter累计到20后循环直接终止,因此所有输出的点赞值都是第一条帖子的点赞数据。
  • 额外潜在问题:单独全局抓取点赞、评论元素列表的逻辑不稳定,若某条帖子没有点赞/评论,两个列表的长度会不一致,直接按索引配对也会出现数据错位的情况。
修复方案

优先推荐先抓取所有帖子的父级元素,再从每个父元素内单独提取对应点赞、评论数值,可彻底避免配对错位问题,示例代码如下:

import time
from selenium.common.exceptions import ElementNotVisibleException, NoSuchElementException

data = []
# 此处的选择器需要替换为实际页面对应每条帖子的父元素CSS选择器
posts = driver.find_elements_by_css_selector("帖子父元素选择器")[:20]

for post in posts:
    try:
        like = post.find_element_by_css_selector(".v-align-middle.social-details-social-counts__reactions-count").text
    except (ElementNotVisibleException, NoSuchElementException):
        like = 0
    try:
        comment = post.find_element_by_css_selector(".social-details-social-counts__comments.social-details-social-counts__item").text
    except (ElementNotVisibleException, NoSuchElementException):
        comment = 0
    data.append({
        "Post Likes": like,
        "Post Comments": comment
    })
    time.sleep(2)

如果确认页面所有帖子的点赞、评论元素顺序严格一一对应,也可以用zip函数替代嵌套循环,最小程度修改原有代码:

data = []

likes = driver.find_elements_by_css_selector(".v-align-middle.social-details-social-counts__reactions-count")
comments = driver.find_elements_by_css_selector(".social-details-social-counts__comments.social-details-social-counts__item")

# 配对两个列表,取前20组数据
for like, comment in zip(likes, comments)[:20]:
    try:
        data.append({
        "Post Likes": like.text,
        "Post Comments": comment.text
        })
        time.sleep(2)
    except (ElementNotVisibleException, NoSuchElementException):
        data.append({
        "Post Likes": 0,
        "Post Comments": 0
        })

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:36:02