aggregators.pdpj.client.PdpjScraper

aggregators.pdpj.client.PdpjScraper(
    verbose=0,
    download_path=None,
    sleep_time=0.5,
    token=None,
    politica=None,
)

Raspador para a API DATALAKE - Processos do PDPJ.

A API consome JWT do SSO PJe (mesmo provedor do JusBR), entao o uso tipico e: obter o token via portal do PDPJ logado, chamar auth e usar os endpoints de consulta/download.

Os metodos por processo (cpopg, documentos, movimentos, partes e existe com lista) e download_documents devolvem uma linha de falha quando a requisicao de um item falha, com o motivo na coluna motivo_falha (vocabulario em juscraper.core.failures) e um UserWarning agregado ao fim.

Nos metodos por processo, o processo ausente do data lake sai com o motivo nao_encontrado. A API diz isso de duas formas: 404 no endpoint do processo, ou 500 no endpoint com 404 na pesquisa por numeroProcesso. No primeiro 500 de um processo, o raspador faz essa pesquisa, numa tentativa so: com 404, para de retentar; com qualquer outra resposta, segue as tentativas do perfil. Assim o processo ausente custa duas requisicoes, e nao as seis tentativas do perfil. O 401 e a falha do SSO ao renovar o token (ErroSsoPdpj) interrompem a coleta. Metodos sem linha por item (existe com str, contar e pesquisa) levantam o erro.

As requisicoes usam os perfis "listagem" e "documento" de RequestPolicy, ajustaveis no construtor com politica=.

Methods

Name Description
auth Define o JWT usado em todas as chamadas autenticadas.
contar Total de processos que casam com os filtros (/processos:contar).
cpopg Recupera os detalhes de processo(s) via API /processos/{n}.
documentos Lista documentos do(s) processo(s) (sem baixar conteudo).
download_documents Baixa textos e/ou binarios dos documentos listados.
existe Checa presenca de processo(s) no Data Lake.
movimentos Lista movimentos do(s) processo(s).
partes Lista partes do(s) processo(s).
pesquisa Busca profunda em GET /api/v1/processos (com paginacao).

auth

aggregators.pdpj.client.PdpjScraper.auth(token)

Define o JWT usado em todas as chamadas autenticadas.

O token passa por juscraper.core.auth.validar_jwt, que recusa token malformado ou vencido antes do primeiro uso. O conteudo do JWT nao e logado.

Raises

Name Type Description
ValueError Quando o token e malformado ou ja expirou. O token e o header anteriores ficam como estavam.

contar

aggregators.pdpj.client.PdpjScraper.contar(**kwargs)

Total de processos que casam com os filtros (/processos:contar).

Aceita o mesmo subconjunto de filtros de pesquisa exceto os relacionados a paginacao/ordenacao. Retorna int.

Raises

Name Type Description
requests.ConnectionError Quando a requisicao falha.
InvalidJSONResponseError Quando a resposta nao traz um inteiro.

cpopg

aggregators.pdpj.client.PdpjScraper.cpopg(id_cnj)

Recupera os detalhes de processo(s) via API /processos/{n}.

Parameters

Name Type Description Default
id_cnj str | list[str] Numero CNJ ou lista de numeros. required

Returns

Name Type Description
pd.DataFrame DataFrame com uma linha por tramitacao do processo. Colunas
principais pd.DataFrame processo (CNJ pesquisado, dignos de digito),
pd.DataFrame numero_processo (formatado pela API), sigla_tribunal,
pd.DataFrame segmento_justica, data_atualizacao, detalhes
pd.DataFrame (dict com a resposta completa) e motivo_falha. A API que
pd.DataFrame responde lista vazia gera uma linha com
pd.DataFrame status_consulta="Nao encontrado"; a consulta que falha gera
pd.DataFrame uma linha com status_consulta igual a
pd.DataFrame data:juscraper.core.failures.STATUS_CONSULTA_FALHA e o motivo.
pd.DataFrame O processo ausente do data lake (ver a classe) sai nessa linha,
pd.DataFrame com o motivo nao_encontrado.

Raises

Name Type Description
requests.HTTPError No 401 (token ausente, expirado ou invalido), com as falhas anteriores numa nota do erro.
ErroSsoPdpj Quando o SSO do PJe recusa ou não consegue renovar o token no meio do lote. Propaga como o 401, com as falhas anteriores numa nota do erro.

Avisos

UserWarning: Quando pelo menos uma consulta falhou.

See Also

InputCnjPdpj – schema pydantic.

documentos

aggregators.pdpj.client.PdpjScraper.documentos(id_cnj)

Lista documentos do(s) processo(s) (sem baixar conteudo).

O processo cuja consulta falha sai numa linha so, com processo e motivo_falha preenchidos e as demais colunas vazias. O processo ausente do data lake sai assim, com nao_encontrado, e nao como lista sem documentos. O 401 interrompe; ver cpopg.

download_documents

aggregators.pdpj.client.PdpjScraper.download_documents(
    base_df,
    max_docs_per_process=None,
    *,
    with_text=True,
    with_binary=False,
)

Baixa textos e/ou binarios dos documentos listados.

base_df pode vir de documentos (uma linha por documento, ja com id_documento e numero_processo) ou de cpopg (uma linha por processo com detalhes – nesse caso a lista de documentos e extraida de detalhes['documentos']).

Um documento cujo download falha não interrompe a coleta: a linha sai com texto/_raw_texto e/ou binario iguais a None e o método segue para o próximo documento. Conta como falha qualquer erro HTTP diferente de 401 (inclusive o 403, que a API pode devolver para um documento isolado, como um sigiloso, e que por isso não é retentado), o retry de 429/5xx/timeout esgotado e o erro de conexão. A coluna motivo_falha guarda o motivo, no vocabulário de juscraper.core.failures; com texto e binário, guarda o do texto quando o texto falhou, senão o do binário, e o None de cada coluna diz qual conteúdo faltou. Ao fim, um único UserWarning informa quantos downloads falharam e cita alguns, com processo, documento, conteúdo e motivo. O 401 propaga, porque token inválido atinge o lote inteiro.

O documento sem arquivo (arquivo_id vazio, na base que traz a coluna) não tem conteúdo no data lake, e a API responde 404 ao pedido de texto dele. Ele sai com os conteúdos None e motivo_falha None, sem requisição e fora do aviso, e ocupa vaga do limite, como qualquer linha devolvida.

Parameters

Name Type Description Default
base_df pd.DataFrame DataFrame fonte das chamadas. required
max_docs_per_process int | None Limite de linhas devolvidas por processo, na ordem de base_df. Linhas sem id_documento sao puladas sem ocupar vaga do limite; um documento cujo download falhou ocupa vaga, como no JusBR, porque sua linha sai no resultado (com conteúdo None) e a requisição já foi feita. None = sem limite; 0 devolve DataFrame vazio sem fazer requisicao. None
with_text bool Se True (default), baixa o texto via /documentos/{id}/texto. True
with_binary bool Se True, baixa o binario via /documentos/{id}/binario. Default False para nao consumir banda quando o usuario so quer texto. False

Returns

Name Type Description
pd.DataFrame DataFrame com uma linha por documento. Inclui colunas
pd.DataFrame texto e binario (quando solicitados), None nos
pd.DataFrame documentos cujo download falhou, e motivo_falha.

Raises

Name Type Description
ValidationError Quando base_df nao e um DataFrame ou max_docs_per_process e negativo.
ValueError Quando with_text e with_binary sao ambos False, ou quando base_df nao tem coluna id_documento nem detalhes.
requests.HTTPError Quando a API responde 401 (token ausente, expirado ou inválido). O erro atinge o lote inteiro, então propaga e as linhas já baixadas se perdem; as falhas anteriores ao 401 vão numa nota do próprio erro (__notes__), não no UserWarning.
ErroSsoPdpj Quando o SSO do PJe recusa ou não consegue renovar o token no meio do lote. Propaga como o 401, com as falhas anteriores numa nota do erro.

Avisos

UserWarning: Quando pelo menos um download de documento falhou. Um aviso por chamada, com a contagem e alguns exemplos, emitido só quando a coleta termina.

See Also

InputDownloadDocumentsPdpj: schema pydantic e fonte da verdade dos parametros aceitos.

existe

aggregators.pdpj.client.PdpjScraper.existe(id_cnj)

Checa presenca de processo(s) no Data Lake.

Parameters

Name Type Description Default
id_cnj str | list[str] Numero CNJ unico (str) ou lista de numeros. required

Returns

Name Type Description
bool | pd.DataFrame bool quando id_cnj e str; pd.DataFrame com
bool | pd.DataFrame colunas processo, existe e motivo_falha quando e
bool | pd.DataFrame list. Na lista, o processo cuja consulta falhou sai com
bool | pd.DataFrame existe=None e o motivo, nao_encontrado no processo ausente
bool | pd.DataFrame (ver a classe).

Raises

Name Type Description
requests.HTTPError No 401, e com str em qualquer erro HTTP.
ErroSsoPdpj Quando o SSO do PJe recusa ou não consegue renovar o token; na lista, com as falhas anteriores numa nota do erro.
InvalidJSONResponseError Com str, quando a consulta falha; a resposta sem true/false levanta o ultimo.

See Also

InputCnjPdpj – schema pydantic.

movimentos

aggregators.pdpj.client.PdpjScraper.movimentos(id_cnj)

Lista movimentos do(s) processo(s).

Falha por processo como em documentos.

partes

aggregators.pdpj.client.PdpjScraper.partes(id_cnj)

Lista partes do(s) processo(s).

Falha por processo como em documentos.

pesquisa

aggregators.pdpj.client.PdpjScraper.pesquisa(paginas=None, **kwargs)

Busca profunda em GET /api/v1/processos (com paginacao).

Parameters

Name Type Description Default
paginas int | list[int] | range | None Intervalo 1-based. Aceita int (3 -> primeiras 3 paginas), list, range ou None (todas). None
**kwargs Any Filtros aceitos pelo schema InputPesquisaPdpj (todos opcionais; None = sem filtro): * numero_processo (str) * numero_processo_sintetico (str) * id (str): id interno do processo no Data Lake * cpf_cnpj_parte (str): com formatacao * nome_parte (str) * polo_parte (str): “ATIVO” ou “PASSIVO” * situacao_parte (str) * nome_representante / oab_representante (str) * id_classe (str): codigos separados por virgula * id_assunto_judicial (str): ids separados por virgula * id_orgao_julgador (str | list[str]) * instancia (str): “PRIMEIRO_GRAU”/“SEGUNDO_GRAU”/etc. * segmento_justica (str): “JUSTICA_FEDERAL”/“JUSTICA_ESTADUAL”/etc. * tribunal (str): siglas separadas por virgula (max 5) * data_atualizacao_inicio / _fim (str): ISO datetime * data_primeiro_ajuizamento_inicio / _fim (str): ISO datetime * campo_ordenacao (str): campo de ordenacao decrescente * itens_por_pagina (int): default 100. Vai a API como maxElementsSize, mas a API ignora o valor: a especificacao publica do data lake traz maxElementsSize so na resposta, como o maximo por consulta, e nao declara parametro de tamanho de pagina. Em campo, o pedido de 5 devolveu 100 itens. A pagina nao se corta no cliente, porque o cursor searchAfter da pagina seguinte vem da ultima linha que a API mandou; para limitar o total, use paginas. {}

Returns

Name Type Description
pd.DataFrame DataFrame com uma linha por processo retornado. A API responde 404
pd.DataFrame (“Não foram encontrados registros”) a pagina seguinte a ultima com
pd.DataFrame dados e a busca sem resultado; o 404 encerra a coleta, e a busca
pd.DataFrame sem resultado devolve DataFrame vazio.

Raises

Name Type Description
(requests.ConnectionError, InvalidJSONResponseError) Quando a requisicao de qualquer pagina falha, com status diferente de 404. Pagina nao vira linha de falha, e devolver as paginas anteriores truncaria o resultado sem aviso.

See Also

InputPesquisaPdpj – schema pydantic e a fonte da verdade dos filtros aceitos.