Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Código não funciona
#1
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
deanhystad write Apr-23-2025, 07:56 PM:
Please post all code, output and errors (it it's entirety) between their respective tags. Refer to BBCode help topic on how to post. Use the "Preview Post" button to make sure the code is presented as you expect before hitting the "Post Reply/Thread" button.
Reply
#2
Please describe the problem you are having. If there are errors, please post the error message and complete error trace.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Código simples Lumen253 1 1,548 Apr-23-2022, 02:00 AM
Last Post: Pedroski55

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020