Skip to content

Instantly share code, notes, and snippets.

@pedrovhb
Last active May 25, 2017 01:48
Show Gist options
  • Save pedrovhb/3a6ae8635af67c8c050f267bdf40a336 to your computer and use it in GitHub Desktop.
Save pedrovhb/3a6ae8635af67c8c050f267bdf40a336 to your computer and use it in GitHub Desktop.
last_seen_day = '' # Pra guardarmos o último dia visto
max_height = float('-INF') # Menor valor possível, pra futuras comparações
max_height_time = '' # Hora da maior altura
max_height_day = '' # Dia da maré com maior altura
min_height = float('INF') # Maior valor possível, pra futuras comparações
min_height_time = '' # Hora da menor altura
min_height_day = '' # Dia da maré com menor altura
# Pra cada tr na lista...
for tr in tr_list:
# Se houver algum elemento no tr com bgcolor #C0C0C0 (legenda), ignorar
if tr.find(lambda tag: tag.get('bgcolor') == '#C0C0C0') is not None:
continue # Quebrar o loop e ir pro próximo tr
# Se só houver um elemento td em tr, ignorar
if len(tr.find_all(lambda tag: tag.name == 'td')) == 1:
continue
# Se houver um elemento com bgcolor #D7D9E8, é um elemento com data
if tr.find(lambda tag: tag.get('bgcolor') == '#D7D9E8') is not None:
td_list = tr.find_all(lambda tag: tag.name == 'td')
# Vimos antes que a string que contém o dia está no elemento número 1 do tr
# Anotamos o último dia visto porque se uma das alturas for a maior ou menor, vamos guardá-las com esse dia
last_seen_day = td_list[1].text
# No elemento 3 está a altura da maré no horário dessa linha de tabela.
# Se ela for maior ou menor do que as outras vistas:
# - anotamos o valor como maior ou menor
# - anotamos o dia como o último dia visto
# - anotamos a hora como a hora dessa linha
if float(td_list[3].text) > max_height:
max_height = float(td_list[3].text)
max_height_time = td_list[2].text
max_height_day = last_seen_day
if float(td_list[3].text) < min_height:
min_height = float(td_list[3].text)
min_height_time = td_list[2].text
min_height_day = last_seen_day
continue # Quebrar loop e ir pro próximo tr
# Se houver um elemento com bgcolor #FFFFFF, é um elemento só com data e altura
if tr.find(lambda tag: tag.get('bgcolor') == '#FFFFFF') is not None:
td_list = tr.find_all(lambda tag: tag.name == 'td')
# Mesma lógica da de cima
if float(td_list[3].text) > max_height:
max_height = float(td_list[3].text)
max_height_time = td_list[2].text
max_height_day = last_seen_day
if float(td_list[3].text) < min_height:
min_height = float(td_list[3].text)
min_height_time = td_list[2].text
min_height_day = last_seen_day
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment