Нажмите на многие из тех же кнопок при очистке данных - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь почистить отзывы с этого сайта Google Play, используя R (в основном "RSelenium" и "rvest": https://play.google.com/store/apps/details?id=hr.mireo.arthur&hl=en&fbclid=IwAR3c-PkUXOea8KrKLp9Q3JUjCidGmgO2jYX_Qb7O8VuWlHXPIS5nDOfKRKI&showAllReviews=true

Мне удалось загрузить страницу, используя RSelenium и make al oop, который прокручивает страницу вниз и нажимает на все кнопки «Показать больше». Вот код, который я использовал:

#Load packages
library(rvest)
library(dplyr)
library(wdman)
library(RSelenium)

#Open website using RSelenium
url <- 'https://play.google.com/store/apps/details?id=hr.mireo.arthur&hl=en&fbclid=IwAR3c-PkUXOea8KrKLp9Q3JUjCidGmgO2jYX_Qb7O8VuWlHXPIS5nDOfKRKI&showAllReviews=true'
rD <- rsDriver(port = 4567L, browser=c("chrome"), chromever="80.0.3987.106")
remDr <- rD[["client"]]
remDr$open()
remDr$navigate(url)

#Load whole page by scrolling and showing more
xp_show_more <- "//*[@id='fcxH9b']/div[4]/c-wiz/div/div[2]/div/div[1]/div/div/div[1]/div[2]/div[2]/div"
replicate(5,
          {
            replicate(5,
                      {
                        # scroll down
                        webElem <- remDr$findElement("css", "body")
                        webElem$sendKeysToElement(list(key = "end"))
                        # wait
                        Sys.sleep(1)
                      })
            # find button
            morereviews <- remDr$findElement(using = 'xpath', xp_show_more)
            # click button
            tryCatch(morereviews$clickElement(),error=function(e){print(e)}) # trycatch to prevent any error from stopping the loop
            # wait
            Sys.sleep(3)
          })

Это приводит к загрузке всех 573 комментариев, но несколько в комментариях есть кнопки «Полный обзор», которые нужно нажимать, чтобы увидеть остальную часть. Я пытаюсь создать скрипт, который нажимает на все кнопки «Полный обзор» (я полагаю, их чуть более 30), но я не могу этого сделать. Мой текущий скрипт нажимает на первые кнопки «Полный обзор»

#Click on "Full Review"
xp_full_review <- '//*[@id="fcxH9b"]/div[4]/c-wiz/div/div[2]/div/div[1]/div/div/div[1]/div[2]/div/div[2]/div/div[2]/div[2]/span[1]/div/button'
replicate(35,
          {
fullreviews <- remDr$findElement(using = 'xpath', xp_full_review)
fullreviews$clickElement()
Sys.sleep(0.5)
          })

Может ли кто-то обнаружить ошибку и найти способ нажать на все кнопки «Полный обзор»?

Спасибо

...