Python Selenium switch_to.frame () не работает - PullRequest
1 голос
/ 10 апреля 2019

Я пытался получить текст с сайта. 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). Но я понятия не имею, почему я потерпел неудачу ..

Пожалуйста, помогите

1 Ответ

1 голос
/ 10 апреля 2019

Объединить переменные в строку

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

Выход:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...