【问题标题】:Python Selenium: How to extract text from an element within an iframe?Python Selenium:如何从 iframe 中的元素中提取文本?
【发布时间】:2021-12-11 17:55:33
【问题描述】:

情况

我需要从 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' object has no attribute 'text' 到目前为止我的代码是这样的:

iframe 内的根树

问题

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

【问题讨论】:

    标签: python selenium-webdriver web-scraping


    【解决方案1】:

    提取文本:

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

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

    错误

    您收到的错误是因为方法

    .get_attribute('innerHTML')
    

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

    .text
    

    硒对象具有的属性。

    【讨论】:

      猜你喜欢
      • 2023-02-07
      • 2019-08-10
      • 1970-01-01
      • 2021-05-12
      • 1970-01-01
      • 1970-01-01
      • 2019-02-16
      • 1970-01-01
      • 2020-11-03
      相关资源
      最近更新 更多