Webscraping simples com pandas#

Vamos utilizar pandas para fazer o download da tabela de retornos do S&P 500 do site da macrotrends.

O output será o mesmo do segundo script que fizemos em BeautifulSoup no capítulo anterior.

import pandas as pd

# Site de onde pretendemos fazer o webscraping
url = 'https://www.macrotrends.net/2526/sp-500-historical-annual-returns'

# Código para ler as tabelas todas da página usando pandas
tables = pd.read_html(url)

# Selecionar uma tabela (no nosso caso foi a primeira tabela mas poderia não ter sido)
df = tables[0]

df
S&P 500 Index - Historical Annual Data
Year Average Closing Price Year Open Year High Year Low Year Close Annual % Change
0 2023 4097.82 3824.14 4425.84 3808.10 4376.86 14.00%
1 2022 4097.49 4796.56 4796.56 3577.03 3839.50 -19.44%
2 2021 4273.41 3700.65 4793.06 3700.65 4766.18 26.89%
3 2020 3217.86 3257.85 3756.07 2237.40 3756.07 16.26%
4 2019 2913.36 2510.03 3240.02 2447.89 3230.78 28.88%
... ... ... ... ... ... ... ...
91 1932 6.92 7.82 9.31 4.40 6.89 -15.15%
92 1931 13.66 15.85 18.17 7.72 8.12 -47.07%
93 1930 21.00 21.18 25.92 14.44 15.34 -28.48%
94 1929 26.19 24.81 31.86 17.66 21.45 -11.91%
95 1928 19.94 17.76 24.35 16.95 24.35 37.88%

96 rows × 7 columns

Inicialmente o uso do pandas poderá parecer a solução para tudo, e com código mais simples, mas nem todos os valores que queremos se encontram em tabelas ou nem todos os sites são construídos correctamente e conseguimos obter as tabelas desta forma.

Dito isto, este tutorial foi uma simples e breve introdução a webscraping, havendo ainda bastante mais para explorar como a biblioteca selenium. Contudo, o que foi explicado,resolve uma parcela significativa de problemas para poderem fazer o download de dados de forma a automatizar tarefas repetitivas e/ou actualizar dados para as vossas análises.