2017-12-18 309 views
5

Web sayfasından bazı öğeleri ayrıştırmak için selenyum ile birlikte python'a bir komut dosyası yazdım. Yine de çalışamıyorum. Sonraki öğelerim (belki) iframe içinde. Değiştirmeye çalıştım ama bunun bir etkisi yok. iframe'u değiştirmeye çalıştığım çizgiyi bulduğunda hala TimeoutException dışında hiçbir şey alamıyorum. Nasıl çalışabilirim. Şimdiden teşekkürler: BuradaBir web sayfasından birkaç öğe almayla ilgili sorun

web sayfası bağlantısını gider: 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() 

Öğeleri, içinde ürün Peşinde olduğum:

<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> 

Bu aldığım bekliyorum çıkışı (olduğu css seçicilerini kullanarak almaya çalıştığımda yerel olarak çalışır):

5 
1h 
1D 
1M 
1D 

o web görünüyor:

enter image description here

cevap

4

Gerekli düğümleri 2 iç içe iframe'lerde içinde bulunan, bu nedenle tek onlara bir geçiş gerekir. İkinci olanın id/name dinamik olarak üretildiğini unutmayın. Sadece Sadece imkansız efendim Andersson olan

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

ile

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

değiştiriyoruz. Evet, sen yaptın. – SIM