2017-12-18 149 views
5

Napisałem skrypt w Pythonie w połączeniu z selenem, aby przeanalizować niektóre elementy ze strony internetowej. W każdym razie nie mogę tego zrobić. Pozycje, których szukam, są (być może) w zakresie iframe. Próbowałem to zmienić, ale to nie ma żadnego efektu. Wciąż nie otrzymuję nic oprócz TimeoutException, gdy trafi w linię, w której próbowałem zmienić iframe. Jak mogę to sprawić? Z góry dzięki:Problemy z uzyskaniem kilku pozycji ze strony internetowej

Tu idzie link internetowa: URL

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 

url = "replace_with_above_url" 

driver = webdriver.Chrome() 
driver.get(url) 
wait = WebDriverWait(driver, 10) 

wait.until(EC.frame_to_be_available_and_switch_to_it((By.ID, "tradingview_fe623"))) 

for item in wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, ".quick .apply-common-tooltip"))): 
    print(item.text) 

driver.quit() 

Elements, w którym elementy Jestem po:

<div class="quick"> 
    <span class="apply-common-tooltip">5</span> 
    <span class="apply-common-tooltip">1h</span> 
    <span class="apply-common-tooltip selected">1D</span> 
    <span class="apply-common-tooltip">1M</span> 
    <span class="apply-common-tooltip">1D</span> 
</div> 

To wyjście ja spodziewałem się (działa lokalnie, gdy próbuję uzyskać je za pomocą selektorów css):

5 
1h 
1D 
1M 
1D 

Jak to wygląda w internecie:

enter image description here

Odpowiedz

4

Wymagane węzły umieszczone wewnątrz 2 zagnieżdżonych iframe, więc trzeba przełączyć się na nich, jeden po drugim. Zauważ, że id/ drugiej generowane dynamicznie. Wystarczy spróbować zastąpić

wait.until(EC.frame_to_be_available_and_switch_to_it((By.ID, "tradingview_fe623"))) 

z

wait.until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR, ".abs"))) 
wait.until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR, "iframe[id^='tradingview_']"))) 
+0

Jesteś po prostu niemożliwe sir Andersson. Tak, udało ci się. – SIM