SIM*_*SIM 5 python selenium web-scraping python-3.x selenium-webdriver
我在python中编写了一个与selenium结合使用的脚本来解析网页中的一些项目.无论如何我无法让它工作.我所追求的物品(可能)在其中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()
Run Code Online (Sandbox Code Playgroud)
我追求的物品所在的元素:
<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>
Run Code Online (Sandbox Code Playgroud)
这是我期望的输出(当我尝试使用css选择器时它在本地工作):
5
1h
1D
1M
1D
Run Code Online (Sandbox Code Playgroud)
这是它在网络上的样子:
所需节点位于 2 个嵌套 iframe 内,因此需要一一切换到它们。请注意,第二个的id/是动态生成的。name只是尝试更换
wait.until(EC.frame_to_be_available_and_switch_to_it((By.ID, "tradingview_fe623")))
Run Code Online (Sandbox Code Playgroud)
和
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_']")))
Run Code Online (Sandbox Code Playgroud)