我正试着阅读与google商店的应用程序相关的评论。我正为此使用硒。jscontroller ="H6e0Ge“中的每个评论。
在jscontroller = "H6e0Ge“标签中,我试图检索用户给出的评级与”aria-标签“相关联,如图所示。
要阅读所有审阅者的评等,我的代码是
driver = webdriver.Chrome('/Users/yasirmuhammad/Downloads/chromedriver')
driver.get('https://play.google.com/store/apps/details?id=com.axis.drawingdesk.v3&hl=en&showAllReviews=true')
for a in driver.find_elements_by_xpath("//*[@class='d15Mdf bAhLNe']"):
print(a.find_element_by_class_name('X43Kjb').text)
print(a.find_element_by_class_name('p2TkOb').text)
print(a.find_element_by_xpath('/html/body/div[1]/div[4]/c-wiz/div/div[2]/div/div[1]/div/div/div[1]/div[2]/div/div[2]/div/div[2]/div[1]/div[1]/div/span[1]/div/div').get_attribute('aria-label'))
第三种打印语句读取评级,但问题是它对所有用户来说都是一样的。原因是我复制了第一个用户评级的完整xpath,因此它显示了其他用户的相同评级。因此,我将第三项声明改为以下声明:
print(a.find_element_by_class_name('pf5lIe').get_attribute('aria-label'))
但是,该语句返回"None“。有人能指导我如何阅读“咏叹号”相关信息吗?
发布于 2020-01-23 10:30:13
您不能像使用定位器一样使用H6e0Ge
和html/body/div[1]/div[4]/c-wiz/div/div[2]/div/div[1]/div/div/div[1]/div[2]/div/div[2]/div/div[2]/div[1]/div[1]/div/span[1]/div/div
,因为它们是dynamically changes,而且不会很快工作。
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
reviews = WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.XPATH, "//h3[.='User reviews']/following-sibling::div[1]/div")))
for review in reviews:
print(review.find_element_by_xpath(".//span[1]").text)
print(review.find_element_by_xpath(".//span[2]").text)
print(review.find_element_by_xpath(".//div[@role='img']").get_attribute('aria-label'))
print(review.find_element_by_xpath("descendant::div[@jscontroller][last()])").text)
Xpaths:
//h3[.='User reviews']/following-sibling::div[1]/div//span[1]
//h3[.='User reviews']/following-sibling::div[1]/div//span[2]
//h3[.='User reviews']/following-sibling::div[1]//div[@role='img']
//h3[.='User reviews']/following-sibling::div[1]/div/descendant::div[@jscontroller][last()]
发布于 2020-01-23 09:53:16
您正在尝试读取标记的父<div>
的属性,但它不在那里。您需要按以下方式修复代码:
print(a.find_element_by_xpah('.//div[@jscontroller and @jsmodel and @jsdata]//span[@class='nt2C1d']//div[@aria-label]').get_attribute('aria-label'))
发布于 2020-01-23 11:04:05
要读取所有审阅者的评等,您需要为WebDriverWait导入visibility_of_all_elements_located()
,并且可以使用以下Locator Strategies
使用
XPATH
:5).until(EC.visibility_of_all_elements_located((By.XPATH,(‘https://play.google.com/store/apps/details?id=com.axis.drawingdesk.v3&hl=en&showAllReviews=true')打印([my_elem.get_attribute(“aria-label”) my_elem in WebDriverWait(驱动程序,driver.get "//h3text()='User reviews'//following::div1//spantext()//following::div1//div@role='img'")))])
“五星中的四星”、“五星中的五星”、“五星中的一颗”、“五星中的五星”、“五星中的四星”、“五星中的五星”,“五星中的四颗星”,“五星中的五星”,“五星中有五星”、“五星中有四星”、“五星中有五星”、“五星中有五星”,“5颗星中的5颗星”和“5颗stars'
从selenium.webdriver.support.ui导入WebDriverWait从selenium.webdriver.common.by导入从selenium.webdriver.support导入expected_conditions作为EC
https://stackoverflow.com/questions/59875511
复制相似问题