Как я могу получить обзоры на следующей странице с селеном? - PullRequest
1 голос
/ 01 октября 2019

Я пытаюсь очистить более 10 страниц отзывов от https://www.innisfree.com/kr/ko/ProductReviewList.do

Однако, когда я перехожу на следующую страницу и пытаюсь получить отзывы новой страницы, я все равно получаю только отзывы первой страницы,

я использовал driver.execute_script ("goPage (2)"), а также time.sleep (5), но мой код дает мне только обзоры первой страницы.

'' 'я не сделалиспользуйте цикл for только для того, чтобы увидеть, отличаются ли результаты для страниц page1 и page2. '' '' '' Я импортировал Beautifulsoup и Selenium '' '

. Вот мой код:

  url = "https://www.innisfree.com/kr/ko/ProductReviewList.do"

  chromedriver = r'C:\Users\hhm\Downloads\chromedriver_win32\chromedriver.exe'

  driver = webdriver.Chrome(chromedriver)

  driver.get(url)


  print("this is page 1")

  driver.execute_script("goPage(1)")

  nTypes = soup.select('.reviewList ul .newType div[class^=reviewCon] .reviewConTxt')


  for nType in nTypes:

         product = nType.select_one('.pdtName').text

         print(product)


 print('\n')

 print("this is page 2")

 driver.execute_script("goPage(2)")

 time.sleep(5)

 nTypes = soup.select('.reviewList ul .newType div[class^=reviewCon] .reviewConTxt')


 for nType in nTypes:

         product = nType.select_one('.pdtName').text

         print(product)

Ответы [ 2 ]

0 голосов
/ 01 октября 2019

Попробуйте следующий код. Вам нужно нажать на каждую ссылку на нумерацию страниц, чтобы перейти на следующую страницу. Вы получите все 100 комментариев.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup
import time
url = "https://www.innisfree.com/kr/ko/ProductReviewList.do"
chromedriver = r'C:\Users\hhm\Downloads\chromedriver_win32\chromedriver.exe'
driver = webdriver.Chrome(chromedriver)
driver.get(url)

for i in range(2,12):
   time.sleep(2)
   soup=BeautifulSoup(driver.page_source,'html.parser')
   nTypes = soup.select('.reviewList ul .newType div[class^=reviewCon] .reviewConTxt')
   for nType in nTypes:
      product = nType.select_one('.pdtName').text
      print(product)
   if i==11:
    break
   nextbutton=WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//span[@class='num']/a[text()='" +str(i)+"']")))
   driver.execute_script("arguments[0].click();",nextbutton)
0 голосов
/ 01 октября 2019

Если ваша вторая страница открывается как новое окно, вам нужно переключиться на другую страницу и переключить контроль селена на другое окно

Пример:

# Opens a new tab
self.driver.execute_script("window.open()")

# Switch to the newly opened tab
self.driver.switch_to.window(self.driver.window_handles[1])

Источник:

Как перейти в новое окно в Selenium для Python?

https://www.techbeamers.com/switch-between-windows-selenium-python/

...