【问题标题】:Python Selenium switch_to.frame() isn't workingPython Selenium switch_to.frame() 不起作用
【发布时间】:2019-04-10 08:11:30
【问题描述】:

我试图从网站上获取文本。 iframe 是 HTML,所以我尝试了 .switch_to.frame() 但失败了。

在这个网站(https://finance.naver.com/sise/sise_trans_style.nhn) 中,有多个 iframe,但 @name = 'day' 的只有一个。 (xpath : //*[@name='day'])

所以我尝试了 switch_to.frame() 并在 iframe 中获取元素。

但是结果

from bs4 import BeautifulSoup
from selenium import webdriver
import time

url = 'https://finance.naver.com/sise/sise_trans_style.nhn' 
driver = webdriver.Chrome('./chromedriver.exe')
column_list = []

try : 
driver.get(url)

time.sleep(1)


iframe = driver.find_element_by_name('day')
driver.switch_to.frame(iframe)

time.sleep(1)

for n in range(4,9):
    for i in range(1,12):

        element = driver.find_element_by_xpath('/html/body/table[1]/tbody/tr[n]/td[i]').text
        column_list.append(element)

except Exception as e :
    print(e)

finally : 
    driver.quit()

print(column_list)

我希望 column_list 包含许多浮点元素。 但是结果是这样的。。

消息:没有这样的元素:无法找到元素:{"method":"xpath","selector":"/html/body/table[1]/tbody/tr[n]/td[i]" }

似乎该消息说我实际上并没有 switch_to.frame(ifrmae)。但我不知道为什么我失败了..

请帮忙

【问题讨论】:

    标签: python-3.x iframe web-scraping selenium-chromedriver


    【解决方案1】:

    将变量连接成字符串

    element = driver.find_element_by_xpath('/html/body/table[1]/tbody/tr[' + str(n) + ']/td[' + str(i) +']').text
    

    输出:

    【讨论】:

    • 哦!非常感谢!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    • 2018-09-30
    • 2017-09-08
    • 1970-01-01
    相关资源
    最近更新 更多