селен не выполняет итерацию по элементам

Im пытается перевести комментарии пользователей от tripadvisor.
Мой код: –

1.] Выбирает только португальские комментарии (из раскрывающегося языка),

2.] Затем расширяет каждый из комментариев,

3.] Затем сохраняет все эти расширенные комментарии в списке

4.] Затем переводит их на английский и печатает на экране

from selenium import webdriver from selenium.webdriver.common.by import By import time from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC com_=[] # To save translated comments expanded_comments=[] # To save expanded comments driver = webdriver.Chrome("C:\Users\shalini\Downloads\chromedriver_win32\chromedriver.exe") driver.maximize_window() def expand_reviews(driver): # TRYING TO EXPAND REVIEWS (& CLOSE A POPUP) try: driver.find_element_by_class_name("moreLink").click() except: print "err" try: driver.find_element_by_class_name("ui_close_x").click() except: print "err" try: driver.find_element_by_class_name("moreLink").click() except: print "err3" def save_comments(driver): expand_reviews(driver) # SELECTING ALL EXPANDED COMMENTS expanded_com_elements=driver.find_elements_by_class_name("entry") time.sleep(3) for i in expanded_com_elements: expanded_comments.append(i.text) # SELECTING ALL GOOGLE-TRANSLATOR links gt= driver.find_elements(By.CSS_SELECTOR,".googleTranslation>.link") # NOW PRINTING TRANSLATED COMMENTS for i in gt: try: driver.execute_script("arguments[0].click()",i) #i.click().perform() com=driver.find_element_by_class_name("ui_overlay").text com_.append(com) time.sleep(5) driver.find_element_by_class_name("ui_close_x").click().perform() time.sleep(5) except Exception as e: pass #print e for i in range(282): page=i*10 url="https://www.tripadvisor.com/Airline_Review-d8729164-Reviews-Cheap-Flights-or"+str(page)+"-TAP-Portugal#REVIEWS" driver.get(url) wait = WebDriverWait(driver, 10) if i==0: # SELECTING PORTUGUESE COMMENTS ONLY # Run for one time then iterate over pages try: langselction = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "span.sprite-date_picker-triangle"))) langselction.click() driver.find_element_by_xpath("//div[@class='languageList']//li[normalize-space(.)='Portuguese first']").click() time.sleep(5) except Exception as e: print e save_comments(driver) 

================ ОШИБКА =================

expand_comments возвращает пустой список. Некоторые комментарии сохраняются, некоторые пропущены. Первая страница сохраняется должным образом (все комментарии расширены), но после этого сохраняется только первый комментарий, без расширения. Но переведенные комментарии со всех страниц сохраняются должным образом в com_

One Solution collect form web for “селен не выполняет итерацию по элементам”

Я изменил свой код, и теперь он работает.

 from selenium import webdriver from selenium.webdriver.common.by import By import time from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC driver = webdriver.Chrome("./chromedriver.exe") driver.maximize_window() url="https://www.tripadvisor.com/Airline_Review-d8729164-Reviews-Cheap-Flights-TAP-Portugal#REVIEWS" driver.get(url) wait = WebDriverWait(driver, 10) # SELECTING PORTUGUESE COMMENTS ONLY #show_lan = driver.find_element_by_xpath("//div[@class='languageList']/ul/li[contains(text(),'Portuguese first')]") try: langselction = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "span.sprite-date_picker-triangle"))) langselction.click() driver.find_element_by_xpath("//div[@class='languageList']//li[normalize-space(.)='Portuguese first']").click() time.sleep(5) except Exception as e: print e # TRYING TO EXPAND REVIEWS (& CLOSE A POPUP) try: driver.find_element_by_class_name("moreLink").click() except: print "err" try: driver.find_element_by_class_name("ui_close_x").click() except: print "err" try: driver.find_element_by_class_name("moreLink").click() except: print "err3" # SELECTING ALL EXPANDED COMMENTS expanded_com_elements=driver.find_elements_by_class_name("entry") expanded_comments=[] time.sleep(3) for i in expanded_com_elements: expanded_comments.append(i.text) # SELECTING ALL GOOGLE-TRANSLATOR links gt= driver.find_elements(By.CSS_SELECTOR,".googleTranslation>.link") # NOW PRINTING TRANSLATED COMMENTS for i in gt: try: driver.execute_script("arguments[0].click()",i) #i.click().perform() print driver.find_element_by_class_name("ui_overlay").text time.sleep(5) driver.find_element_by_class_name("ui_close_x").click().perform() time.sleep(5) except Exception as e: pass #print e 
  • Не удалось получить фактическую разметку со страницы с помощью BeautifulSoup
  • Как написать скребковый контент в файл CSV?
  • Нажмите кнопку на веб-сайте, затем очистите веб-страницу
  • Информация о заполнении формы селена python
  • Как я могу нажать кнопку «Дополнительно» при веб-сканировании Tripadvisor с использованием селена?
  • Загрузите файлы .xls с веб-страницы с помощью Python и BeautifulSoup
  • Как я могу визуализировать JavaScript HTML в HTML в python?
  • Захват элементов с помощью селектора в скрипте python
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.