Python Selenium爬取谷歌评论:三循环改单循环数据重复如何修复
问题原因
- 你在循环内部查询评分和评论时使用的XPath路径以
//开头,该语法表示从整个HTML文档的根节点开始搜索匹配元素,因此每次循环都会固定返回页面中第一个符合条件的评分、评论内容,最终出现所有条目信息重复的问题。 - 要实现从当前循环的单条评论节点
review_info下搜索子元素,需要在路径开头添加.,即使用相对路径.//,代表从当前节点开始向下匹配。
修复后的代码
reviews_info = driver.find_elements_by_xpath("//div[@class='jxjCjc']") for review_info in reviews_info: name = review_info.find_element_by_xpath("./div/div/a").text # 路径前加. 表示从当前review_info节点下查找 rating = review_info.find_element_by_xpath(".//div[@class='PuaHbe']//g-review-stars//span").get_attribute('aria-label') text = review_info.find_element_by_xpath(".//div[@class='Jtu6Td']//span").text print(name) print(rating) print(text) print()
补充说明:如果你使用的是Selenium 4.0及以上版本,find_element_by_xpath方法已被官方废弃,建议替换为find_element(By.XPATH, "对应路径")的写法,避免后续版本兼容问题
内容的提问来源于stack exchange,提问作者user2293224
相关产品推荐
相关产品推荐

