我試圖從這個網站上抓取資料: https://www.rad.cvm.gov.br/ENETCONSULTA/frmGerenciaPaginaFRE.aspx?NumeroSequencialDocumento=102142&CodigoTipoInstituicao=2,但從“Demonstra??o do Resultado”切換到“Balan?o Patrimonial Ativo”右上框,整個表格在 CSS 選擇器“#ctl00_cphPopUp_tbDados”下,但我無法使用 selenium webdriver 獲取資料,我認為表格是動態的并在腳本下加載,但我不知道其他方法來獲得這個資料。這是到目前為止的完整代碼:
cvm = input('Códigos CVM separados por vírgula: ')
lstcvm = list(map(str,cvm.split(',')))
for i in lstcvm:
url="https://bvmf.bmfbovespa.com.br/cias-listadas/empresas-listadas/ResumoDemonstrativosFinanceiros.aspx?codigoCvm=" i "&idioma=pt-br"
driver = webdriver.Firefox()
driver.get(url)
dfp = driver.find_element(By.CSS_SELECTOR, "#ctl00_contentPlaceHolderConteudo_rptDocumentosDFP_ctl00_lnkDocumento")
webdriver.ActionChains(driver).click(dfp).perform()
time.sleep(10)
tabs=driver.window_handles
driver.switch_to.window(tabs[1])
print(driver.current_url)
box = driver.find_element(By.CSS_SELECTOR, "#cmbQuadro")
box.send_keys(Keys.HOME, Keys.RETURN)
time.sleep(1)
driver.maximize_window()
time.sleep(1)
balanco=driver.find_element(By.CSS_SELECTOR, "#ctl00_cphPopUp_tbDados").text
balanco
driver.switch_to.window(tabs[0])
print(driver.current_url)
print("Finalizado")
這里的樣本輸入是 9512
用于嘗試抓取資料的代碼部分是這樣的:
balanco=driver.find_element(By.CSS_SELECTOR, "#ctl00_cphPopUp_tbDados").text
uj5u.com熱心網友回復:
選擇Balan?o Patrimonial Ativo,然后從網站的DFs Consolidadas / Balan?o Patrimonial Ativo - (Reais Mil)表中提取資料,您需要為visibility_of_element_located()誘導WebDriverWait并使用Pandas中的DataFrame,您可以使用以下定位器策略:
代碼塊:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import pandas as pd
driver.get("https://www.rad.cvm.gov.br/ENETCONSULTA/frmGerenciaPaginaFRE.aspx?NumeroSequencialDocumento=102142&CodigoTipoInstituicao=2")
Select(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "select#cmbQuadro")))).select_by_visible_text("Balan?o Patrimonial Ativo")
WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe#iFrameFormulariosFilho")))
data = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "table#ctl00_cphPopUp_tbDados"))).get_attribute("outerHTML")
df = pd.read_html(data)
print(df)
控制臺輸出:
[ 0 1 2 3
0 Conta Descri??o 31/12/2020 31/12/2019
1 1 Ativo Total 987.419.000 926.011.000
2 1.01 Ativo Circulante 142.323.000 112.101.000
3 1.01.01 Caixa e Equivalentes de Caixa 60.856.000 29.714.000
4 1.01.02 Aplica??es Financeiras 3.424.000 3.580.000
.. ... ... ... ...
61 1.02.03.03 Imobilizado em Andamento NaN NaN
62 1.02.04 Intangível 77.678.000 78.489.000
63 1.02.04.01 Intangíveis NaN NaN
64 1.02.04.01.01 Contrato de Concess?o NaN NaN
65 1.02.04.02 Goodwill NaN NaN
[66 rows x 4 columns]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/414619.html
標籤:
上一篇:僅下載和提取來自BBC的新聞
