2017-03-15 3 views
2

Im nouveau à python, ou codant pour cette matière ...Python Sélénium Loop Through Liens

Cette partie du code me permet de trouver tous les éléments que je veux cliquer (cliquer sur le lien ouvrir une nouvelle onglet)

from selenium import webdriver 
import time 

driver = webdriver.Chrome() 
driver.get("http://www.rezultati.com/kosarka/filipini/kup/") 

list_of_links = driver.find_elements_by_css_selector(".cell_ad.time") 
for link in list_of_links: 
    link.click() 

Il est évident que cette boucle ouvre que des liens .. Je suis intéressé par la façon d'ajouter, somethin comme celui-ci, de recueillir quelques données:

# wait to open link 
time.sleep(3) 
# handle new window 
newtab = driver.current_window_handle 
driver.switch_to_window(newtab) 
# collecting data and print data 
date = driver.find_elements_by_class_name("mstat-date") 
for d in date: 
    print(d.text) 
# Some code to close newtab? 
???? 

Comment puis-je mettre ce t hroughout la boucle for .. En d'autres termes, veulent aller dans chaque lien et collecter des données .. Que ce soit possible? Quelques suggestions ou exemples de code?

Répondre

1

Vous pouvez ci-dessous le code qui permettent de gérer chaque fenêtre avec des résultats de match dans une boucle:

from selenium import webdriver 

driver = webdriver.Chrome() 
driver.get("http://www.rezultati.com/kosarka/filipini/kup/") 

list_of_links = driver.find_elements_by_css_selector(".cell_ad.time") 
cur_win = driver.current_window_handle # get current/main window 

for link in list_of_links: 
    link.click() 
    driver.switch_to_window([win for win in driver.window_handles if win !=cur_win][0]) # switch to new window 
    date = driver.find_elements_by_class_name("mstat-date") 
    for d in date: 
     print(d.text) 
    driver.close() # close new window 
    driver.switch_to_window(cur_win) # switch back to main window 
+0

cela fonctionne, merci beaucoup :) –