Python Forum

Full Version: Código não funciona
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
não consigo automatizar a busca em um site, podem me ajudar a solucionar o erro?
Esse é o código:
import requests
import pandas as pd
from datetime import datetime, timedelta

# Parâmetros de busca
palavras_chave = ["cartografia", "topografia", "geodésia"]
estado = "BA"
data_inicio = (datetime.today() - timedelta(days=7)).strftime('%Y-%m-%d')
data_fim = datetime.today().strftime('%Y-%m-%d')

URL = "https://pncp.gov.br/api/consulta/v1/contratacoes/consultarPeriodoRecebimentoPropostas"
HEADERS = {"Content-Type": "application/json"}

def buscar_editais_filtrados(estado, palavras_chave, data_inicio, data_fim):
    resultados = []
    pagina = 1

    while True:
        print(f"🔍 Página {pagina}...")

        payload = {
            "uf": estado,
            "dataInicioRecebimentoProposta": data_inicio,
            "dataFimRecebimentoProposta": data_fim,
            "pagina": pagina,
            "tamanhoPagina": 100
        }

        resposta = requests.post(URL, headers=HEADERS, json=payload)

        if resposta.status_code != 200:
            print(f"⚠️ Erro ao buscar dados: {resposta.status_code}")
            break

        dados = resposta.json()
        registros = dados.get("contratacoes", [])

        for edital in registros:
            objeto = edital.get("objeto", "").lower()
            if any(palavra in objeto for palavra in palavras_chave):
                resultados.append({
                    "Objeto": edital.get("objeto", ""),
                    "Modalidade": edital.get("modalidade", ""),
                    "Data Fim Proposta": edital.get("dataFimRecebimentoProposta", ""),
                    "Órgão": edital.get("orgao", {}).get("nome", ""),
                    "Município": edital.get("municipio", ""),
                    "UF": edital.get("uf", ""),
                    "Link PNCP": edital.get("urlPNCP", "")
                })

        if dados.get("ultimaPagina", True):
            break
        pagina += 1

    return resultados

# Executa a busca e exibe os resultados filtrados
editais_filtrados = buscar_editais_filtrados(estado, palavras_chave, data_inicio, data_fim)
df = pd.DataFrame(editais_filtrados)

print(f"\n✅ Total de editais encontrados com palavras-chave: {len(df)}")
df.head(10)
Por favor, me ajudem! Angry
Please describe the problem you are having. If there are errors, please post the error message and complete error trace.