首页 > 解决方案 > Python Selenium:如何从 iframe 中的元素中提取文本?

问题描述

情况

我需要从 iframe 内的 div 元素中提取一些文本。我有切换到 iframe 的代码,但我无法从 div 元素中获取文本。

编码

from selenium import webdriver
import pandas as pd
from selenium.webdriver.support.ui import WebDriverWait
timeout = 100
import sys
from bs4 import BeautifulSoup

driver = webdriver.Chrome('chromedriver.exe')

driver.get('https://dealers.carwow.co.uk/dealers/sign_in')

username = driver.find_element_by_id("dealer_email")
password = driver.find_element_by_id("dealer_password")

username.send_keys("email")
password.send_keys("password")

driver.find_element_by_name("commit").click()
driver.find_element_by_link_text("""View Report""").click()


try:
    driver.implicitly_wait(50)
    iframe = driver.find_element_by_css_selector('iframe')
    driver.switch_to.frame(iframe)
    table = driver.find_element_by_id('173d5612')
    table_text = table.get_attribute('innerHTML').text
    print(table_text)

except Exception as e:
    print(e)
    driver.close()
    sys.exit(0)

问题

目前它因错误而失败:“str”对象没有属性“text”到目前为止我的代码是这样的:

iframe 内的根树

iframe 内的根树

问题

我需要得到上面红色圆圈内的文字。我怎样才能做到这一点?为什么我会收到此错误?

标签: pythonselenium-webdriverweb-scraping

解决方案


提取文本:

切换到 iframe 后,您可以简单地使用 xpath 访问文本元素,如下所示

    driver.find_element_by_xpath("//div[@id='layout-grid']/table[@class='layout-grid']/div[@class='label-inner']").text

错误

您收到的错误是因为方法

.get_attribute('innerHTML')

返回一个字符串,而不是一个对象,并且Python 字符串没有

.text

selenium 对象具有的属性。


推荐阅读