Извлечение таблиц из Iframe - Anbima Использование Python + селен - PullRequest
0 голосов
/ 27 сентября 2019

Sup, я пытаюсь извлечь некоторые таблицы данных с веб-сайта (https://www.anbima.com.br/pt_br/informar/curvas-de-juros-fechamento.htm),, но, как мы видим, данные находятся внутри Iframe. Это заняло у меня некоторое время, так как я не эксперт вЧтобы получить доступ к нужной странице, нажмите кнопку «Consultar». По сути, я не загружаю данные (4 таблицы), которые тоже есть в Iframe.

Проблема в том, что я до сих пор не могуУ меня не было успешных попыток получить таблицы, возможно, это из-за Iframe.

Например, я попытался использовать xpath i в первой таблице без успеха.

drive.find_elemnt_by_xpath (//*[@id="Parametros"]/table).text

Вот код для перехода на страницу, которую я упомянул:

from selenium import webdriver
import time
import re
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as expectedCondition
from selenium.webdriver.chrome.options import Options
import pandas as pd
import numpy as np

#----------------------- INICIALIZAÇÃO DO SCRAPING -----------------------------#
want_to_scrape = True
if want_to_scrape:
    options = Options()
    #options.add_argument('--headless')
    driver = webdriver.Chrome("C:\\Users\\......\\chromedriver.exe",options=options)

    now = time.time()
    dataset_list = []

    url = 'https://www.anbima.com.br/pt_br/informar/curvas-de-juros-fechamento.htm'
    driver.get(url)


    #element  = driver.find_element_by_class_name('full')
    #driver.switch_to.frame(element)

    driver.switch_to.frame(0)

    element = driver.find_elements_by_name('Consultar')
    element[0].click()
    time.sleep(1)
    try:
        alert = driver.switch_to_alert()
        alert.accept()
        print("alert accepted")
    except:
        print("no alert")
    time.sleep(1)

    driver.switch_to.frame(0)

    driver.find_element_by_xpath

1 Ответ

0 голосов
/ 27 сентября 2019

Попробуйте заменить строку driver.switch_to.frame(0) на следующую:

# Get the iframe element - note, may need to use more specialized selector here
iframe = driver.find_elements_by_tag_name('iframe')

driver.switch_to.frame(iframe)

Это переведет ваш драйвер в контекст фрейма, чтобы вы могли получить таблицы.Вам может понадобиться использовать другой селектор, чтобы получить элемент iframe.Если вы разместите здесь iframe HTML, я могу помочь вам написать селектор.

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