Python Selenium switch_to.frame()不起作用

问题描述 投票:1回答:1

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

在这个网站(https://finance.naver.com/sise/sise_trans_style.nhn)中,有几个iframe,但@name ='day'的iframe只有一个。 (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有很多float元素。但结果是这样的......

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

似乎消息说我实际上并没有切换到框架(iframe)。但我没有线索为什么我失败了..

请帮忙

python-3.x iframe web-scraping selenium-chromedriver
1个回答
1
投票

将变量连接成字符串

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

输出:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.