Python: загрузка всего веб-контента в селене - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь получить комментарии всех рецензентов для определенного приложения (https://play.google.com/store/apps/details?id=com.getsomeheadspace.android&hl=en&showAllReviews=true), используя селен и Beautifulsoup. Я загружаю ссылку, используя следующий код:

driver = webdriver.Chrome(path)
driver.get('https://play.google.com/store/apps/details?id=com.tudasoft.android.BeMakeup&hl=en&showAllReviews=true')

Приведенная выше команда не загружает все комментарии рецензентов. Я имею в виду, что он загружает только первые 39 комментариев и не загружает оставшиеся комментарии. Есть ли способ загрузить все комментарии в один go?

Ответы [ 2 ]

1 голос
/ 28 января 2020

Вы можете использовать бесконечное l oop и загружать страницу, пока элемент Show More не будет найден из-за отложенной загрузки. Чтобы замедлить l oop, я использовал time.sleep(1). Он дает 200 отзывов на этой странице. Если вы хотите получить больше, вам нужно снова нажать Show More.

Однако некоторые форматы обзора не поддерживают, поэтому попробуйте ... за исключением блока. Надеюсь, это поможет .

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

driver = webdriver.Chrome()
driver.get('https://play.google.com/store/apps/details?id=com.tudasoft.android.BeMakeup&hl=en&showAllReviews=true')

while True:
  driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")
  time.sleep(1)
  elements=WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, 'div.UD7Dzf')))
  if len(driver.find_elements_by_xpath("//span[text()='Show More']"))>0:
      break;

print(len(elements))
allreview=[]
try:
   for review in elements:
       allreview.append(review.text)
except:
    allreview.append("format incorrect")

print(allreview)
0 голосов
/ 28 января 2020

Похоже, вам нужно прокрутить вниз, чтобы получить всю информацию на странице.

попробуйте это:

driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")

Возможно, вам придется сделать это пару раз загрузить все данные

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...