如何从下面的html中提取数据?
How to extract data from the following html?
我要从中提取数据的 Html 是:
<div class="infoMessageInner">
<p>
<span ng-bind-html="servicesCtrl.texts.addressInfo" class="ng-binding">
Fiber är beställd till adressen. Tjänsterna kan du beställa när installationen är färdig.
</span>
<span ng-show="servicesCtrl.address.status === 'Orderable'" class="ng-hide">
<a ng-click="servicesCtrl.preScrollToVerticalPosition('checkout', 'checkout', '/checkoutFiber', undefined, 'Checkout fiber')">Till fiberbeställningen
</a>
</span>
<span ng-show="servicesCtrl.address.status === 'Inquireable'" class="ng-hide">
<a ng-click="servicesCtrl.preScrollToVerticalPosition('checkout', 'checkout', '/inquiry', undefined, 'Inquiry')">Till intresseanmälan</a>
</span>
</p>
</div>
**我只想从第一个跨度 only.So 中提取数据,我已经做到了 post 并得到了解决方案,但问题仍然存在,我得到的是空的 selenium web 元素列表。 **
代码片段是:(使用Python-Selenium)
driver.find_elements_by_css_selector('div.infoMessageInner > p')
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, 'div.infoMessageInner > p')))
data = driver.find_elements_by_css_selector('div.infoMessageInner > p')
请帮助并抱歉 post 提出这样的问题,因为我正在学习 selenium。
要提取文本 光纤已订购到地址。您可以在安装完成后订购服务。 仅从第一个跨度开始,您只需要诱导 WebDriverWait 以使 文本出现在element ,你可以使用以下解决方案:
进口:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
代码行:
#Option 1 - text_to_be_present_in_element and CSS_SELECTOR
element = WebDriverWait(driver, 20).until(EC.text_to_be_present_in_element((By.CSS_SELECTOR, "div.infoMessageInner>p>span.ng-binding"), "Fiber är beställd till adressen"))
#Option 2 - text_to_be_present_in_element_value and CSS_SELECTOR
element = WebDriverWait(driver, 20).until(EC.text_to_be_present_in_element_value((By.CSS_SELECTOR, "div.infoMessageInner>p>span.ng-binding"), "Fiber är beställd till adressen"))
#Option 3 - text_to_be_present_in_element and XPATH
element = WebDriverWait(driver, 20).until(EC.text_to_be_present_in_element((By.XPATH, "//div[@class='infoMessageInner']/p/span[@class='ng-binding']"), "Fiber är beställd till adressen"))
#Option 4 - text_to_be_present_in_element_value and XPATH
element = WebDriverWait(driver, 20).until(EC.text_to_be_present_in_element_value((By.XPATH, "//div[@class='infoMessageInner']/p/span[@class='ng-binding']"), "Fiber är beställd till adressen"))
文本将是:
Fiber är beställd till adressen. Tjänsterna kan du beställa när installationen är färdig.
如果 html 中没有更多的 <span>
个元素,您可以使用 driver.find_element_by_tag_name('span').text
找到第一个跨度元素
您可以在 CSS 选择器中使用以下绑定
.ng-binding
编辑:
driver.find_element_by_css_selector('.ng-binding').text
我要从中提取数据的 Html 是:
<div class="infoMessageInner">
<p>
<span ng-bind-html="servicesCtrl.texts.addressInfo" class="ng-binding">
Fiber är beställd till adressen. Tjänsterna kan du beställa när installationen är färdig.
</span>
<span ng-show="servicesCtrl.address.status === 'Orderable'" class="ng-hide">
<a ng-click="servicesCtrl.preScrollToVerticalPosition('checkout', 'checkout', '/checkoutFiber', undefined, 'Checkout fiber')">Till fiberbeställningen
</a>
</span>
<span ng-show="servicesCtrl.address.status === 'Inquireable'" class="ng-hide">
<a ng-click="servicesCtrl.preScrollToVerticalPosition('checkout', 'checkout', '/inquiry', undefined, 'Inquiry')">Till intresseanmälan</a>
</span>
</p>
</div>
**我只想从第一个跨度 only.So 中提取数据,我已经做到了 post 并得到了解决方案,但问题仍然存在,我得到的是空的 selenium web 元素列表。 **
代码片段是:(使用Python-Selenium)
driver.find_elements_by_css_selector('div.infoMessageInner > p')
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, 'div.infoMessageInner > p')))
data = driver.find_elements_by_css_selector('div.infoMessageInner > p')
请帮助并抱歉 post 提出这样的问题,因为我正在学习 selenium。
要提取文本 光纤已订购到地址。您可以在安装完成后订购服务。 仅从第一个跨度开始,您只需要诱导 WebDriverWait 以使 文本出现在element ,你可以使用以下解决方案:
进口:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
代码行:
#Option 1 - text_to_be_present_in_element and CSS_SELECTOR element = WebDriverWait(driver, 20).until(EC.text_to_be_present_in_element((By.CSS_SELECTOR, "div.infoMessageInner>p>span.ng-binding"), "Fiber är beställd till adressen")) #Option 2 - text_to_be_present_in_element_value and CSS_SELECTOR element = WebDriverWait(driver, 20).until(EC.text_to_be_present_in_element_value((By.CSS_SELECTOR, "div.infoMessageInner>p>span.ng-binding"), "Fiber är beställd till adressen")) #Option 3 - text_to_be_present_in_element and XPATH element = WebDriverWait(driver, 20).until(EC.text_to_be_present_in_element((By.XPATH, "//div[@class='infoMessageInner']/p/span[@class='ng-binding']"), "Fiber är beställd till adressen")) #Option 4 - text_to_be_present_in_element_value and XPATH element = WebDriverWait(driver, 20).until(EC.text_to_be_present_in_element_value((By.XPATH, "//div[@class='infoMessageInner']/p/span[@class='ng-binding']"), "Fiber är beställd till adressen"))
文本将是:
Fiber är beställd till adressen. Tjänsterna kan du beställa när installationen är färdig.
如果 html 中没有更多的 <span>
个元素,您可以使用 driver.find_element_by_tag_name('span').text
您可以在 CSS 选择器中使用以下绑定
.ng-binding
编辑:
driver.find_element_by_css_selector('.ng-binding').text