Instagram评论Selenium爬虫仅抓取用户名不返回评论问题求助
问题原因
- 最核心错误:获取评论内容时取到了第一个span元素
你使用container.find_element_by_tag_name('span')获取内容,而C4VMK容器下的第一个span就是包裹用户名的元素(也就是你之前取name的_6lAjh类对应的元素),所以拿到的内容和用户名完全一致,需要匹配到第二个span元素才是评论内容。 - class name查询带多余空格
你代码中find_element_by_class_name('gElp9 ')、find_element_by_class_name('_6lAjh ')的类名末尾都带了多余空格,class属性匹配是严格的,多余空格会导致匹配失败或者拿到非预期元素,需要删掉末尾空格。 - url列表存在语法错误
你列表中'https://www.instagram.com/p/CM8T3HgMQG0/?utm_medium=copy_link'这一行末尾漏了逗号,会导致它和下一行的url拼接成一个字符串,请求时直接404。 - 多余的pop操作逻辑冗余
你在try块内和评论遍历结束后都执行了pop(0),如果评论加载失败或者没有评论的场景下,会出现列表为空pop报错的问题,建议调整逻辑只在确认有冗余首条数据的时候执行pop。
修正后的核心遍历代码
comment = driver.find_elements_by_class_name('gElp9') # 去掉末尾多余空格 for c in comment: container = c.find_element_by_class_name('C4VMK') name = container.find_element_by_class_name('_6lAjh').text # 去掉末尾多余空格 # 取所有span标签的第二个元素,对应评论内容 span_elements = container.find_elements_by_tag_name('span') content = span_elements[1].text if len(span_elements) >= 2 else '' # 兼容空评论场景 content = content.replace('\n', ' ').strip() user_names.append(name) user_comments.append(content) print(content) # 确认列表非空再移除首条冗余的发帖人正文数据 if user_names and user_comments: user_names.pop(0) user_comments.pop(0)
内容的提问来源于stack exchange,提问作者Fawwaz Zaini Ahmad
相关产品推荐
相关产品推荐

