Advertisement
Guest User

ControleAcademicoAutomatico

a guest
Nov 28th, 2015
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.21 KB | None | 0 0
  1. # coding: utf-8
  2. # Programa escrito por Eric Breno B. dos Santos
  3. # Programa apenas com fins didáticos
  4. # Recomendado rodar em sistemas linux, é necessario instalar o pacote mechanize e cookielib.
  5. # Para instalar use "sudo apt-get install python-setuptools", "sudo easy install mechanize",
  6. # "sudo easy install html2text" e "sudo easy install BeatifulSoup"
  7. #
  8. #
  9. ################# Alterar informações nas linhas: 11, 53, 54 E 77. #######################
  10.  
  11. links = {"NOME_MATERIA": "LINK_DO_CONTROLE"} #Podem haver vários links
  12. import mechanize
  13. import cookielib
  14. import time
  15. from os import system
  16.  
  17. br = mechanize.Browser()
  18. url = 'https://150.165.111.151:8443/ControleAcademicoOnline/'
  19.  
  20. matric = 'MATRICULA AQUI EM STRING'
  21. senha = 'SENHA AQUI EM STRING'
  22.  
  23. # Prepara para tratar cookies...
  24. cj = cookielib.LWPCookieJar()
  25. br.set_cookiejar(cj)
  26.  
  27. # Ajusta algumas opções do navegador...
  28. br.set_handle_equiv(True)
  29. br.set_handle_gzip(False)
  30. br.set_handle_redirect(True)
  31. br.set_handle_referer(True)
  32. br.set_handle_robots(False)
  33. br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
  34.  
  35. # Configura o user-agent.
  36. # Do ponto de vista do servidor, o navegador agora o Firefox.
  37. br.addheaders = [('User-agent', 'Mozilla/5.0 (X11;\
  38. U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615\
  39. Fedora/3.0.1-1.fc9 Firefox/3.0.1')]      
  40.  
  41. # Pronto! Agora é navegar, acessando a URL usando o método HTTP GET
  42. br.open(url)
  43.  
  44. # Se existirem formulários, você pode selecionar o primeiro (#0), por exemplo...
  45. br.select_form(nr=0)
  46.  
  47. # Para mostrar os formularios e ver os campos a serem preenchidos,
  48. # use um for sobre o br.forms()
  49. for f in br.forms():
  50.    print f
  51.  
  52. # Preencher o formulário com os dados de login...
  53. br.form['login'] = matric
  54. br.form['senha'] = senha
  55.  
  56. # Enviar o formulário usando o método HTTP POST
  57. br.submit()        
  58.  
  59. # E finalmente, busque o HTML retornado:
  60. # html = br.response().read()
  61.  
  62. ultimas_infos = ''
  63. parte_importante = ''
  64.  
  65. # sec_url = 'https://150.165.111.151:8443/ControleAcademicoOnline/Controlador?command=AlunoTurmaNotas&codigo=1109103&turma=04&periodo=2015.1'
  66.  
  67. def acessa_abre_retorna(link):
  68.     parte_importante = ''
  69.    
  70.     br.open(link)
  71.     res = br.response().read()
  72.  
  73.     oi = []
  74.     ultimo = False
  75.  
  76.     for i in xrange(len(res)):
  77.         if res[i:i+25] in '<td>SEU NOME COMPLETO AQUI DENTRO</td>':
  78.             break
  79.  
  80.     tds = 0
  81.     ativ = 0
  82.  
  83.     while tds < 12:
  84.         if res[i] == "<":
  85.             ativ = 1
  86.            
  87.         if ativ == 1:
  88.             if res[i] == ">":
  89.                 ativ = 0
  90.                
  91.         if ativ == 0:
  92.             parte_importante += res[i]
  93.        
  94.         if res[i:i+3] in "</td>" and not ultimo:
  95.             ultimo = True
  96.             tds += 1
  97.         else:
  98.             ultimo = False
  99.            
  100.         i += 1
  101.  
  102.     return parte_importante
  103.    
  104.    
  105. first_run = True
  106.    
  107. while 1:   
  108.     system("clear")
  109.    
  110.     time.ctime()
  111.     print time.strftime('%X %x %Z')
  112.    
  113.     for link in links:
  114.         parte_importante += link + '\n'
  115.         parte_importante += acessa_abre_retorna(links[link])
  116.         parte_importante += '\n'
  117.    
  118.     parte_importante += "Terminado com sucesso. Aguarde..."
  119.    
  120.     print parte_importante
  121.    
  122.     if parte_importante != ultimas_infos and not first_run:
  123.         print "Algo mudou!"
  124.         print ultimas_infos    
  125.         break
  126.    
  127.     time.sleep(50)
  128.    
  129.     ultimas_infos = parte_importante[:]
  130.     parte_importante = ''
  131.     first_run = False
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement