File size: 1,811 Bytes
6215101
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from bs4 import BeautifulSoup
import pandas as pd
import streamlit as st

#st.set_page_config(layout='wide')

options = Options()
options.add_argument('--headless')
#@st.cache_resource
def get_driver():
    return webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)

driver = get_driver()
driver.get("https://iri.columbia.edu/our-expertise/climate/forecasts/enso/current/?enso_tab=enso-sst_table")
page = driver.page_source
soup = BeautifulSoup(page, 'lxml')

#cabeçalho
header = soup.find('h4')
header = header.text.split(':')[1]

# table
table = soup.find('table')
df_table = pd.read_html(str(table))[0]
df_table = pd.DataFrame(df_table.to_records())
df_table = df_table[df_table.columns[1:]]
df_table.set_index('Season', inplace=True)

# Divs
div = soup.find('div', {"id": "ENSO-Plume-Models-Table"})
df = pd.read_html(str(div))[0]
df = pd.DataFrame(df.to_records())
df = df[df.columns[1:]]
colunas = [x.split(',')[1].split(')')[0] for x in df.columns]
colunas = [x.replace(' ', '').replace("'", "") for x in colunas]
df.columns = colunas

# modelos dinamicos
modelos_dinamicos = df[1:18]
modelos_dinamicos.set_index('Model', inplace=True)
modelos_dinamicos = modelos_dinamicos.astype(float)
modelos_dinamicos = modelos_dinamicos.T
modelos_dinamicos['Média'] = modelos_dinamicos.mean(axis=1)

# modelos estatisticos
modelos_estatisticos = df[20:36]
modelos_estatisticos.set_index('Model', inplace=True)
modelos_estatisticos = modelos_estatisticos.astype(float)
modelos_estatisticos = modelos_estatisticos.T
modelos_estatisticos['Média'] = modelos_estatisticos.mean(axis=1)