gui*_*ado 4 selenium xpath web-scraping python-3.x
我正在尝试在我的经纪人网站上自动提取股票价格,因为雅虎和谷歌财经有延迟。但我需要代码来等待“家庭经纪人”上线,以便它可以继续抓取......
这是我的代码:
expected = 'online'
while True:
try:
driver.find_element_by_xpath('//*[@id="spnStatusConexao"]').text == expected
except NoSuchElementException:
print('offline')
else:
print('online')
Run Code Online (Sandbox Code Playgroud)
但是,在测试时,即使家庭经纪人显示“离线”消息,它也会打印“在线”。
当 xpath 文本等于:offline 时,我需要打印“offline”。当 xpath 文本等于:online 时,打印“online”。
编辑:
外部 HTML:
expected = 'online'
while True:
try:
driver.find_element_by_xpath('//*[@id="spnStatusConexao"]').text == expected
except NoSuchElementException:
print('offline')
else:
print('online')
Run Code Online (Sandbox Code Playgroud)
X路径:
<span id="spnStatusConexao" hover="DV_bgConexao" class="StatusConexao online">online</span>Run Code Online (Sandbox Code Playgroud)
完整的 XPath:
//*[@id="spnStatusConexao"]Run Code Online (Sandbox Code Playgroud)
expected_conditionsPython 中有一个内置的操作称为text_to_be_present_in_element. 下面的代码片段将等待span元素包含文本online:
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
WebDriverWait(driver, 10).until(EC.text_to_be_present_in_element((By.ID, "spnStatusConexao"), 'online'))
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,您可以尝试调用WebDriverWait并将presence_of_element_located包含text在您的 XPath 查询中:
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//span[@id='spnStatusConexao' and contains(text(),'online')]")))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10747 次 |
| 最近记录: |