Skip to content

Instantly share code, notes, and snippets.

@duarteguilherme
Created November 4, 2016 21:12
Show Gist options
  • Save duarteguilherme/8b29ec2c579c43a9253bc0d89216c6cc to your computer and use it in GitHub Desktop.
Save duarteguilherme/8b29ec2c579c43a9253bc0d89216c6cc to your computer and use it in GitHub Desktop.
import re
import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient
#banco = MongoClient.trf2.trf2
class Crawler:
def __init__(self,palavra_chave):
self.palavra_chave = palavra_chave
self.browser = requests.Session()
for v in range(2005,2016):
data_ini = str(v) + "-01-01"
data_fim = str(v+1) + "-01-01"
if ( v == 2016 ):
data_fim = str(v) + "-11-04"
self.url = "http://www10.trf2.jus.br/consultas/?q=" + re.sub(' ', '.', palavra_chave) + "&site=v2_jurisprudencia&client=v2_index&proxystylesheet=v2_index&filter=0&getfields=*&lr=lang_pt&oe=UTF-8&ie=UTF-8&output=xml_no_dtd&sort=date%3AD%3AS%3Ad1&entsp=a&adv=1&base=JP-TRF&wc=200&wc_mc=0&ud=1&as_q=inmeta%3ADataDecisao%3Adaterange%3A" + data_ini + ".." + data_fim
print(self.url)
first_page = BeautifulSoup(self.browser.get(self.url).text, 'html.parser')
self.num_pag = int(re.sub('[a-zA-Z\(\)]','',first_page.find(attrs={'title':'Inteiro Teor'}).text)) - 1
indices = [ i*10 for i in range(self.num_pag // 10) ]
for indice in indices:
self.url_juris = "http://www10.trf2.jus.br/consultas/?proxystylesheet=v2_index&getfields=*&entqr=3&lr=lang_pt&ie=UTF-8&oe=UTF-8&requiredfields=(-sin_proces_sigilo_judici:s).(-sin_sigilo_judici:s)&sort=date:D:S:d1&entsp=a&adv=1&base=JP-TRF&ulang=&access=p&entqrm=0&wc=200&wc_mc=0&ud=1&client=v2_index&filter=0&as_q=inmeta:DataDecisao:daterange:" + data_ini + ".." + data_fim + "&q=" + re.sub(' ', '.', palavra_chave) + "%20&start=" + str(indice) + "&site=v2_jurisprudencia"
pagina = BeautifulSoup(self.browser.get(self.url_juris).text,'html.parser')
self.limpa_pagina(pagina)
def limpa_pagina(self, pagina):
for i in pagina.find_all('li', attrs={'class':'g'}):
dados_post = {}
for j in i.find('div', attrs={'class':'tipo_doc'}).find_all('a'):
if 'Consulta processual' in j['title']:
dados_post['link_consulta'] = j['href']
dados_post['numero_processo'] = i.find('div', attrs={'class':'title-doc'}).text
for j in i.find_all('div', attrs={'class':'doc-text'}):
if 'Ementa: ' in j.text:
dados_post['ementa'] = re.sub('Esconder texto\.','',re.sub('Ementa: ','',j.text))
else:
for k in j.find(attrs={'class':'recurso'}):
if 'Classe: ' in k.text:
dados_post['classe'] = k.text
if 'Órgão julgador:' in k.text:
dados_post['orgao_julgador'] = k.find(attrs={'class':'gsa-orgJulg'}).text
for j in i.find('div', attrs={'class':'data-relator'}).find_all('li'):
if 'Data de decisão' in j.text:
dados_post['data_decisao'] = re.sub('Data de decisão', '', j.text).strip()
if 'Data de disponibilização' in j.text:
dados_post['data_disponibilizacao'] = re.sub('Data de disponibilização', '', j.text).strip()
if 'Relator' in j.text:
dados_post['relator'] = re.sub('Relator', '', j.text).strip()
print(dados_post['link_consulta'])
try:
dados_post['partes'] = self.baixa_partes(self.baixa_dados(dados_post['link_consulta']))
except:
dados_post['partes']
print(dados_post)
def baixa_partes(self, cod):
url = 'http://portal.trf2.jus.br/portal/consulta/resinfopartes2.asp?CodDoc=' + cod
baixa = BeautifulSoup(self.browser.get(url).text,'html.parser').find('td').find('td').find('table').find_all('tr')
partes = ""
for i in baixa:
partes = partes + "#" + i.text.strip()
return(re.sub('\s+',' ', partes))
def baixa_dados(self, link):
paginota = BeautifulSoup(self.browser.get(link).text, 'html.parser')
print(paginota)
valor = paginota.find(attrs={'id':'NumProc'})['value']
EstatCont = paginota.find(attrs={'id':'EstatCont'})['value']
CodDoc = paginota.find(attrs={'id':'CodDoc'})['value']
# captchacode = paginota.find(attrs={'id':'captchacode'})['value']
captchacode = 0
gabarito = paginota.find(attrs={'id':'gabarito'})['value']
return(CodDoc)
x = Crawler("ACAO POPULAR")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment