2017-12-18 88 views
5

Tôi đã viết một tập lệnh bằng python kết hợp với selen để phân tích một số mục từ một trang web. Tôi không thể làm cho nó hoạt động được. Các mục tôi đang theo dõi (có lẽ) trong phạm vi iframe. Tôi đã cố gắng để chuyển đổi nó nhưng điều đó không có hiệu lực. Tôi vẫn không nhận được gì ngoại trừ TimeoutException khi nó chạm vào dòng mà tôi đã cố gắng chuyển đổi iframe. Làm thế nào tôi có thể làm cho nó hoạt động. Cảm ơn trước:Gặp sự cố khi nhận vài mục từ một trang web

Ở đây đi vào liên kết trang web: 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 trong đó các mặt hàng Tôi sau:

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

Đây là sản phẩm tôi đang mong đợi để có (nó hoạt động tại địa phương khi tôi cố gắng để có được chúng bằng cách sử dụng selectors css):

5 
1h 
1D 
1M 
1D 

là cách nó sẽ tìm trong trang web:

enter image description here

Trả lời

4

nút buộc nằm bên 2 iframe lồng nhau, vì vậy bạn cần phải chuyển sang từng cái một. Lưu ý rằng id/name số thứ hai được tạo động. Chỉ cần cố gắng để thay thế

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

với

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

Bạn chỉ là không thể thưa ông Andersson. Đúng, bạn đã thực hiện nó. – SIM

Các vấn đề liên quan