Snippets
Created by
Roberto Faga
last modified
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | #!/usr/bin/python
# encoding: utf-8
# filename: baixaLattes.py
#
# scriptLattes V8
# Copyright 2005-2013: Jesús P. Mena-Chalco e Roberto M. Cesar-Jr.
# http://scriptlattes.sourceforge.net/
#
# baixaLattes - Copyright 2015 Roberto Faga Jr
#
# Este programa é um software livre; você pode redistribui-lo e/ou
# modifica-lo dentro dos termos da Licença Pública Geral GNU como
# publicada pela Fundação do Software Livre (FSF); na versão 2 da
# Licença, ou (na sua opinião) qualquer versão.
#
# Este programa é distribuído na esperança que possa ser util,
# mas SEM NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAÇÂO a qualquer
# MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a
# Licença Pública Geral GNU para maiores detalhes.
#
# Você deve ter recebido uma cópia da Licença Pública Geral GNU
# junto com este programa, se não, escreva para a Fundação do Software
# Livre(FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
import sys, time, random, re, os
try:
import mechanize
except:
print "Erro, voce precisa do Mechanize instalado no sistema, instale no Ubuntu com 'sudo apt-get install python-mechanize"
import cookielib
VERSION = '2015-05-26T22'
REMOTE_SCRIPT = 'https://api.bitbucket.org/2.0/snippets/robertofaga/pxBa'
HEADERS = [('Accept-Language', 'en-us,en;q=0.5'),
('Accept-Encoding', 'deflate'),
('Keep-Alive', '115'),
('Connection', 'keep-alive'),
('Cache-Control', 'max-age=0'),
('Host', 'buscatextual.cnpq.br'),
('Origin', 'http,//buscatextual.cnpq.br'),
('User-Agent', 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36'),
]
def __self_update():
import inspect
try:
import simplejson
except:
print "Erro, voce precisa do Simplejson instalado no sistema, instale no Ubuntu com 'sudo apt-get install python-simplejson'"
sys.exit(1)
br = mechanize.Browser()
r = br.open(REMOTE_SCRIPT)
d = simplejson.loads(r.read())
if d['updated_on'][:13] != VERSION:
print "BaixaLattes desatualizado, atualizando..."
r = br.open(d['files']['baixaLattes.py']['links']['self']['href'])
content = r.read()
fpath = os.path.abspath(inspect.getfile(inspect.currentframe()))
try:
handler = file(fpath, 'w')
except:
print "Erro na escrita do novo arquivo, verifique se o arquivo scriptLattes/baixaLattes.py tem permissao de escrita"
sys.exit(1)
handler.write(content)
handler.close()
print "BaixaLattes atualizado, reinicie o programa para utilizar a nova versão, encerrando o ScriptLattes"
sys.exit(0)
def __get_data(id_lattes):
p = re.compile('[a-zA-Z]+')
if p.match(id_lattes):
url = 'http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id='+id_lattes
else:
url = 'http://lattes.cnpq.br/'+id_lattes
br = mechanize.Browser()
br.set_cookiejar(cookielib.LWPCookieJar())
br.set_handle_equiv(True)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
br.addheaders = HEADERS
r = br.open(url)
response = r.read()
if 'infpessoa' in response:
return response
br.select_form(nr=0)
br.form.set_all_readonly(False)
br.form['metodo'] = 'visualizarCV'
r = br.submit()
return r.read()
def baixaCVLattes(id_lattes, debug=True):
tries = 5
while tries > 0:
try:
data = __get_data(id_lattes)
time.sleep(random.random()+0.5) #0.5 a 2 segs de espera, nao altere esse tempo para não ser barrado do servidor do lattes
if 'infpessoa' not in data:
tries -= 1
else:
return data
except Exception, e:
if debug:
print e
tries -= 1
# depois de 5 tentativas, verifiquemos se existe uma nova versao do baixaLattes
__self_update()
if debug:
print '[AVISO] Nao é possível obter o CV Lattes: ', id_lattes
print '[AVISO] Certifique-se que o CV existe.'
raise Exception("Nao foi possivel baixar o CV Lattes em 5 tentativas")
|
Comments (0)
You can clone a snippet to your computer for local editing. Learn more.