2017-12-18 95 views
5

मैंने वेबपृष्ठ से कुछ आइटमों को पार्स करने के लिए सेलेनियम के संयोजन में पायथन में एक स्क्रिप्ट लिखी है। मैं इसे किसी भी तरह से काम नहीं कर सकता। मेरे बाद के आइटम हैं (शायद) iframe के भीतर। मैंने इसे स्विच करने की कोशिश की लेकिन इसका कोई प्रभाव नहीं पड़ा। मुझे TimeoutException को छोड़कर कुछ भी नहीं मिल रहा है जब यह उस लाइन को हिट करता है जहां मैंने iframe स्विच करने का प्रयास किया था। मैं इसे कैसे काम कर सकता हूं। अग्रिम धन्यवाद:किसी वेबपृष्ठ से कुछ आइटम प्राप्त करने में समस्या

यहाँ वेबपेज लिंक जाता है: 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() 

तत्वों के भीतर जो आइटम मैं के बाद:

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

यह आउटपुट मैं उम्मीद कर रहा हूँ (है स्थानीय स्तर पर यह काम करता है जब मैं उन्हें सीएसएस चयनकर्ताओं का उपयोग कर पाने के लिए) की कोशिश:

5 
1h 
1D 
1M 
1D 

यह यह कैसे वेब में दिखाई देता है:

enter image description here

उत्तर

4

आवश्यक नोड्स 2 नेस्टेड iframes के अंदर स्थित है, तो आप एक एक करके उन्हें एक करने के लिए स्विच की जरूरत है। ध्यान दें कि id/name गतिशील रूप से उत्पन्न दूसरे के। बस के साथ

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

तुम बस असंभव साहब एंडरसन हैं

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

को बदलने के लिए प्रयास करें। हाँ, आपने इसे बनाया है। – SIM

संबंधित मुद्दे