Algoritmo em Python que realiza a extração de ações de quaisquer classes processuais, a partir dos resultados das pesquisas na página principal (antes chamada de Acompanhamento Processual) e grava arquivos com os dados de cada processo. Para compreender as funcionalidades, leia o texto Extrator Básico de Dados Judiciais, que trata de um extrator mais simples, mas que utiliza as mesmas ferramentas usadas neste código.
# -*- coding: utf-8 -*-

import requests 

def extrair(fonte,MarcadorInicio, MarcadorFim):
    inicio = fonte.find(MarcadorInicio)
    inicio = inicio + len(MarcadorInicio)
    fim = fonte.find(MarcadorFim, inicio)
    return fonte[inicio:fim]

# Definição dos parâmetros de busca
Classe = "ADI"
NumeroInicial = 1
NumeroFinal = 6000

for n in range (NumeroFinal-NumeroInicial+1):
    
    # Módulo de geração de URLs
    ##url acompanhamento processual
    NumProcesso = str(NumeroFinal-n)
    url = 'http://portal.stf.jus.br/processos/listarProcessos.asp?classe=' + Classe + '&numeroProcesso='+ NumProcesso
    print (url)
    
        
    # Módulo básico de extração andamento processual
    html0 = requests.get(url)
    html0.encoding = 'utf-8'
    html = html0.text
    
    incidente = extrair(html,'id="incidente" value="', '">')

    if 'Processo não encontrado' in html:
        print ("Não há processo")
        nomedoarquivo = 'ADIempty.txt'
        arquivo = open(nomedoarquivo, 'a', encoding='utf-8')
        arquivo.write(NumProcesso +',')
        arquivo.close()
    else:    
        
        
        htmlfonte = extrair(html,'<div class="processo-titulo m-b-8">','<div class="p-l-0" id="resumo-partes">')
        
        htmlpartes = requests.get('http://portal.stf.jus.br/processos/abaPartes.asp?incidente='+incidente)
        htmlpartes.encoding = 'utf-8'
        htmlpartes = htmlpartes.text
        
        htmlinformacoes = requests.get('http://portal.stf.jus.br/processos/abaInformacoes.asp?incidente='+incidente)
        htmlinformacoes.encoding = 'utf-8'
        htmlinformacoes = htmlinformacoes.text
        
        htmlandamentos = requests.get('http://portal.stf.jus.br/processos/abaAndamentos.asp?incidente='+incidente+'&imprimir=1')
        htmlandamentos.encoding = 'utf-8'
        htmlandamentos = htmlandamentos.text

        
        htmlpauta = requests.get('http://portal.stf.jus.br/processos/abaPautas.asp?incidente='+incidente)
        htmlpauta.encoding = 'utf-8'
        htmlpauta = htmlpauta.text
        
        htmlsessao = requests.get('http://portal.stf.jus.br/processos/abaSessao.asp?incidente='+incidente)
        htmlsessao.encoding = 'utf-8'
        htmlsessao = htmlsessao.text
        
        htmldecisoes = requests.get('http://portal.stf.jus.br/processos/abaDecisoes.asp?incidente='+incidente)
        htmldecisoes.encoding = 'utf-8'
        htmldecisoes = htmldecisoes.text
                        
        htmldeslocamentos = requests.get('http://portal.stf.jus.br/processos/abaDeslocamentos.asp?incidente='+incidente)
        htmldeslocamentos.encoding = 'utf-8'
        htmldeslocamentos = htmldeslocamentos.text
        
        htmlpeticoes = requests.get('http://portal.stf.jus.br/processos/abaPeticoes.asp?incidente='+incidente)
        htmlpeticoes.encoding = 'utf-8'
        htmlpeticoes = htmlpeticoes.text
        
        htmlrecursos = requests.get('http://portal.stf.jus.br/processos/abaRecursos.asp?incidente='+incidente)
        htmlrecursos.encoding = 'utf-8'
        htmlrecursos = htmlrecursos.text
        
        # Módulo básico de gravação
        nomedoarquivo = 'ADIhtml2\\' + Classe + NumProcesso + '.html'
        arquivo = open(nomedoarquivo, 'w', encoding='utf-8')
        arquivo.write(url + "\n>>>>incidente=" + incidente + '\nfonte>>>>' +htmlfonte + '\npartes>>>>' + htmlpartes + 'informacoes>>>>' + htmlinformacoes + 'andamentos>>>>' + htmlandamentos + 'pauta>>>>' + htmlpauta + 'sessao>>>>' + htmlsessao + 'decisoes>>>>' + htmldecisoes + 'deslocamentos>>>>' + htmldeslocamentos + 'peticoes>>>>' + htmlpeticoes + 'recursos>>>>' + htmlrecursos)
        arquivo.close()