Ich versuche, Benutzerkommentare von Tripadvisor zu übersetzen.
Mein Code: -Selen kann nicht auf Elemente iterieren
1.] Wählt portugisische Kommentare (von Sprache Dropdown),
2.] erweitert Dann wird jedes der Kommentare,
3.] speichert dann alle diese erweiterten Kommentare in einer Liste
4.] übersetzt Dann sie in Englisch & druckt auf dem Bildschirm
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)
================ FEHLER ================
expanded_comments gibt leere Liste zurück. Einige Kommentare werden gespeichert, andere werden übersprungen. Die erste Seite wird korrekt gespeichert (alle Kommentare werden erweitert), aber danach wird nur der erste Kommentar gespeichert, ohne erweitert zu werden. Aber übersetzte Kommentare von allen Seiten werden korrekt in com_
können Sie mir bitte helfen http://stackoverflow.com/questions/40013400/selenium-python-webscrape-fails-after-first-iteration – shalini
lösen ja i Sie überprüfen und aktualisieren – Piyush