[英]Get data of specific cell in HTML Table using Selenium Webdriver with Python
[英]Is there a way to capture style data using selenium webdriver (python)?
我目前正在尋找公司在風格化我上使用的特定排版(例如對於http://stylifyme.com/?stylify=uber.com我想拉“UberMove,'Open Sans','Helvetica Neue', Helvetica、無襯線、普通、52px、56px、#000000")。 但是,我在最終提取文本時遇到了問題 - 文本顯示在 html 中,但在我嘗試提取文本時沒有出現。 我試過同時提取內部 HTML 和文本 - 請參閱下面的示例代碼和文本。
page=webdriver.Chrome('/Downloads/chromedriver.exe')
page.get('http://stylifyme.com/')
website_finder=page.find_element_by_id('input-stylify')
website_finder.send_keys('www.bcg.com')
website_finder.submit()
#try 1:
print(page.find_element_by_id("result-header-1-dt").text)
#output 1: "Header 1: Font, Style, Size, Leading, Colour"
#try 2
print(page.find_element_by_xpath('/html/body/div[1]/table/tbody/tr[1]/th/strong').get_attribute("innerHTML"))
#output 2: "Header 1:"
HTML代碼:
<th id="result-header-1-dt" class="first" scope="row"><strong style="opacity: 1;">
UberMove, 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif, normal, 52px, 56px, #000000
</strong> <span style="opacity: 1;">Font, Style, Size, Leading, Colour</span></th>
任何幫助將不勝感激!
正如 pguardiario 所提到的,解決方案是等待元素被加載。 使用time.sleep(5)
大部分時間都可以正常工作,但經常使用WebDriverWait
可以更好地工作。 time.sleep
休眠一段時間,這可能會導致運行腳本時出現不必要的暫停,或者如果頁面加載時間過長,則會導致失敗。 WebDriverWait
通過在找到元素后完成來幫助保持腳本運行。 如果從未找到該元素,則將拋出異常。
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.support.ui import WebDriverWait
driver = ...
max_wait_time = 5
selector = ...
by = By.XPATH # Or By.ID, By.CSS_SELECTOR, etc.
try:
WebDriverWait(driver, max_wait_time).until(ec.presence_of_element_located((by, selector)))
except TimeoutException:
print("Failed to find an element with", selector, "in", max_wait_time, "seconds)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.