首页 > 解决方案 > Python Selenium-webdriver:for循环在整个循环中返回列表的第一个元素

问题描述

我正在尝试从 google play 商店检索用户评论相关信息。我有兴趣收集审稿人姓名、审稿人文本、审稿人评分和审稿日期。我正在使用 selenium webdriver 来检索信息。这是我的代码:

baseurl='https://play.google.com/store/apps/details?id=com.zihua.android.mytracks&hl=en&showAllReviews=true'
driver.get(baseurl)

person_info = driver.find_elements_by_xpath("//div[@class='d15Mdf bAhLNe']")

for person in person_info:
    name = person.find_element_by_xpath("//span[@class='X43Kjb']").text
    review = person.find_element_by_xpath("//div[@class='UD7Dzf']/span").text
    print(name)
    print(review)

我的代码的问题是它返回审阅者的名字及其在整个循环中的审阅。谁能指导我我在哪里犯了错误?

标签: pythonpython-3.xseleniumselenium-webdriver

解决方案


看起来您一次又一次地获得相同的信息,因为每个 xpath-search 从 DOM 的开头开始。你可以做的是用一个(点)开始你的与子相关的xpath,'.'以便只处理元素,如下所示

for person in person_info:
    name = person.find_element_by_xpath(".//span[@class='X43Kjb']").text
    review = person.find_element_by_xpath(".//div[@class='UD7Dzf']/span").text
    print(name)
    print(review)

推荐阅读