Очистка всех обзоров приложения Google с использованием Selenium и Python

#python #selenium #web-scraping

#питон #селен #соскабливание паутины

Вопрос:

Я хочу удалить все отзывы из магазина Google Play для конкретного приложения. Я подготовил следующий сценарий:

 # App Reviews Scraper import time from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager  from bs4 import BeautifulSoup  url = "https://play.google.com/store/apps/details?id=com.android.chromeamp;hl=enamp;showAllReviews=true"  # make request driver = webdriver.Chrome(service=Service(ChromeDriverManager().install())) driver.get(url) SCROLL_PAUSE_TIME = 5  # Get scroll height last_height = driver.execute_script("return document.body.scrollHeight") time.sleep(SCROLL_PAUSE_TIME)  while True:  # Scroll down to bottom  driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")   # Wait to load page  time.sleep(SCROLL_PAUSE_TIME)   # Calculate new scroll height and compare with last scroll height  new_height = driver.execute_script("return document.body.scrollHeight")   if new_height == last_height:  break  last_height = new_height  # Get everything inside lt;htmlgt; tag including javscript html = driver.execute_script("return document.getElementsByTagName('html')[0].innerHTML") soup = BeautifulSoup(html, 'html.parser')  reviewer = [] date = []  # review text for span in soup.find_all("span", class_="X43Kjb"):  reviewer.append(span.text)  # review date for span in soup.find_all("span", class_="p2TkOb"):  date.append(span.text)  print(len(reviewer)) print(len(date))  

Однако он всегда показывает только 203. Существует 35 474 218 отзывов. Итак, как я могу загрузить все отзывы?

Комментарии:

1. Если вы полностью проверите поведение, вы увидите, что вам также нужно посмотреть, появляется ли время от времени ссылка » Показать больше «.

Ответ №1:

 wait=WebDriverWait(driver,1)   try:  wait.until(EC.element_to_be_clickable((By.XPATH,"//span[text()='Show More']"))).click() except:  continue  

Просто добавьте это, чтобы проверить наличие элемента «Показать больше» в вашем бесконечном свитке.

Импорт:

 from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait  from selenium.webdriver.support import expected_conditions as EC  

Комментарии:

1. «@Arundeep » большое спасибо, все работает нормально. Теперь столкнулся с другой проблемой: иногда в браузере появляется ошибка, и он застревает (не удалось прокрутить вниз, но ждать бесконечное время). Если я закрою браузер вручную, он не покажет никакого обзора. Есть ли возможность автоматически закрыть браузер, если произошла какая-либо ошибка, и будут показаны отзывы до этого момента?

2. driver.close() для закрытия, и вы можете поместить захватывающие элементы внутри прокрутки вниз.