2017-11-05 4 views
0

私は、このテーブルにデータを解析することを試みた:セレン/美しいスープなどを使ってこのリンクのテーブルを解析するには?

https://www.rad.cvm.gov.br/enetconsulta/frmGerenciaPaginaFRE.aspx?CodigoTipoInstituicao=1&NumeroSequencialDocumento=62733

あなたは、これは、動的に生成されたテーブル(どうやらジャバスクリプト)であることがわかります。どういうわけか、セレンや美しいスープを使ってURLを開くと、テーブルが認識されたり解析されたりすることはありません。テーブルを右クリックしてフレームソース/ページソースを確認すると表示されます彼らは関連していないように見える)。

あなたがPythonでテーブルを解析できるかどうか教えてください。

答えて

0

セレンなどのライブラリを使用してソースを見ると、テーブルがiframeの内部にロードされていて、JavaScriptのフレームURLが設定されていることがわかります:

urlFrame = "https://www.rad.cvm.gov.br/enetconsulta/frmDemonstracaoFinanceiraITR.aspx?Informacao=2&Demonstracao=4&Periodo=0&Grupo=DFs+Consolidadas&Quadro=Demonstra%C3%A7%C3%A3o+do+Resultado&NomeTipoDocumento=DFP&Titulo=Demonstra%C3%A7%C3%A3o%20do%20Resultado&Empresa=VALE%20S.A.&DataReferencia=31/12/2016&Versao=1&CodTipoDocumento=4&NumeroSequencialDocumento=62733&NumeroSequencialRegistroCvm=1789&CodigoTipoInstituicao=1" 

が、このURLは、ブラウザが自動的に送信し、いくつかのクッキーを必要とするので、私たちが最初に私たちの元のURLをロードしますように見えますが、単にフレームのURLにアクセスして、テーブルからデータを抽出します。セレンを使用して

ソリューション:

from bs4 import BeautifulSoup 
from selenium import webdriver 

url = "https://www.rad.cvm.gov.br/enetconsulta/frmGerenciaPaginaFRE.aspx?CodigoTipoInstituicao=1&NumeroSequencialDocumento=62733" 
urlFrame = "https://www.rad.cvm.gov.br/enetconsulta/frmDemonstracaoFinanceiraITR.aspx?Informacao=2&Demonstracao=4&Periodo=0&Grupo=DFs+Consolidadas&Quadro=Demonstra%C3%A7%C3%A3o+do+Resultado&NomeTipoDocumento=DFP&Titulo=Demonstra%C3%A7%C3%A3o%20do%20Resultado&Empresa=VALE%20S.A.&DataReferencia=31/12/2016&Versao=1&CodTipoDocumento=4&NumeroSequencialDocumento=62733&NumeroSequencialRegistroCvm=1789&CodigoTipoInstituicao=1" 

driver = webdriver.Chrome() 
driver.maximize_window() 
driver.get(url) 
driver.get(urlFrame) 

print(driver.page_source) 
soup = BeautifulSoup(driver.page_source, "html.parser") 

table_data = soup.findAll("table", {"id": "ctl00_cphPopUp_tbDados"}) 
# do something with table_data/ parse it further 
print(table_data) 
+0

は、非常に多くのアシシュありがとうございました。ではごきげんよう – Daniel

関連する問題