Home > Back-end >  Using Pandas to scrap data from API - Loop to get all records
Using Pandas to scrap data from API - Loop to get all records

Time:11-18

I am scrapping congress expenses from https://dadosabertos.camara.leg.br/swagger/api.html and I want to have a data frame with all expenses from all congress man.

The code below gets all expenses from the congress man with ID 204528. There are 513 of them and want to create a single data frame with all data. I have already a df with all congressman Id so I am assuming I need to use a loop to fetch all data. Can you please help ?

url = 'https://dadosabertos.camara.leg.br/api/v2/deputados/204528/despesas'
params = {'ano':'2020','ordem':'ASC','ordenarPor':'ano'}
resultado = requests.get(url,params=params)
objetos    = json.loads(resultado.text)
dados      = objetos['dados']
df = pd.DataFrame(dados)
df.head()

CodePudding user response:

If you have list of ids you can use loop to load all the dataframes and at the end .concat them:

import requests
import pandas as pd

url = "https://dadosabertos.camara.leg.br/api/v2/deputados/{}/despesas"
params = {"ano": "2020", "ordem": "ASC", "ordenarPor": "ano"}

ids = [204528]  # <--- your id list

all_dfs = []
for id_ in ids:
    resultado = requests.get(url.format(id_), params=params)
    objetos = resultado.json()
    dados = objetos["dados"]

    df = pd.DataFrame(dados)
    all_dfs.append(df)

df_final = pd.concat(all_dfs)
print(df_final.head())

Prints:

    ano  mes                                                tipoDespesa  codDocumento tipoDocumento  codTipoDocumento dataDocumento numDocumento  valorDocumento                                                                      urlDocumento                                                 nomeFornecedor cnpjCpfFornecedor  valorLiquido  valorGlosa numRessarcimento  codLote  parcela
0  2020    1  MANUTENÇÃO DE ESCRITÓRIO DE APOIO À ATIVIDADE PARLAMENTAR       7030911   Nota Fiscal                 0    2020-01-08    185064439           37.99  https://www.camara.leg.br/cota-parlamentar/documentos/publ/3195/2020/7030911.pdf  Eletropaulo Metropolitana Eletricidade de São Paulo S.A. ENEL    61695227000193         37.99         0.0                   1683859        0
1  2020    1  MANUTENÇÃO DE ESCRITÓRIO DE APOIO À ATIVIDADE PARLAMENTAR       7030914   Nota Fiscal                 0    2020-01-08    185067098           58.57  https://www.camara.leg.br/cota-parlamentar/documentos/publ/3195/2020/7030914.pdf  Eletropaulo Metropolitana Eletricidade de São Paulo S.A. ENEL    61695227000193         58.57         0.0                   1683859        0
2  2020    2  MANUTENÇÃO DE ESCRITÓRIO DE APOIO À ATIVIDADE PARLAMENTAR       7030912   Nota Fiscal                 0    2020-02-08    192932469           96.12  https://www.camara.leg.br/cota-parlamentar/documentos/publ/3195/2020/7030912.pdf  Eletropaulo Metropolitana Eletricidade de São Paulo S.A. ENEL    61695227000193         96.12         0.0                   1683863        0
3  2020    2  MANUTENÇÃO DE ESCRITÓRIO DE APOIO À ATIVIDADE PARLAMENTAR       7030913   Nota Fiscal                 0    2020-02-08    192934315           71.95  https://www.camara.leg.br/cota-parlamentar/documentos/publ/3195/2020/7030913.pdf  Eletropaulo Metropolitana Eletricidade de São Paulo S.A. ENEL    61695227000193         71.95         0.0                   1683863        0
4  2020    3  MANUTENÇÃO DE ESCRITÓRIO DE APOIO À ATIVIDADE PARLAMENTAR       7044361   Nota Fiscal                 0    2020-03-09    200847016           42.36  https://www.camara.leg.br/cota-parlamentar/documentos/publ/3195/2020/7044361.pdf  Eletropaulo Metropolitana Eletricidade de São Paulo S.A. ENEL    61695227000193         42.36         0.0                   1690648        0
  • Related