Fechar

quarta-feira, 21 de setembro de 2011

Python: Download File from web

0 comentários
Baixando um arquivo com pyhon de uma servidor web que requer controle por cookie.

Como exemplo vamos baixar o arquivo com todos os resultados da mega sena

'''
Created on 20/09/2011

@author: Evaldo
'''
import cookielib,urllib2,urllib

class Downloads(object):
    '''
    classdocs
    '''
 
    def FileFromUrl(self,url, localFileName = None):        
        ''' Realiza a requisição'''

        request = urllib2.Request( url)
        response = urllib2.urlopen( request )    
               
        ''' Salvar o arquivo'''
        output = open(localFileName,'wb')
        output.write(response.read())
        output.close()


    def __init__(self):
        '''
        Define o cookie para a conexao
        '''
        self._logged_in = False
        self._cookies = cookielib.CookieJar()
        self._opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self._cookies))
        urllib2.install_opener(self._opener)
      
if __name__ == '__main__':
    try:
        print 'Baixando' 
        d = Downloads()
        d.FileFromUrl('http://www1.caixa.gov.br/loterias/_arquivos/loterias/D_megase.zip','m.zip')
        print 'Concluido'
    except Exception as e:
        print 'Erro' , e


Se você precisar passar algum parâmetro no cookie pode faze-lo assim


'''
Created on 20/09/2011

@author: Evaldo
'''
import cookielib,urllib2,urllib

class Downloads(object):
    '''
    classdocs
    '''
 
    def FileFromUrl(self,url, localFileName = None):        
        
       '''Parametros do cookie'''
        post = urllib.urlencode({"security" : "false"})

        ''' Realiza a requisição''' 
        request = urllib2.Request( url, post)
response = urllib2.urlopen( request )    
               
        ''' Salvar o arquivo'''
        output = open(localFileName,'wb')
        output.write(response.read())
        output.close()


    def __init__(self):
        '''
        Define o cookie para a conexao
        '''
        self._logged_in = False
        self._cookies = cookielib.CookieJar()
        self._opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self._cookies))
        urllib2.install_opener(self._opener)
      
if __name__ == '__main__':
    try:
        print 'Baixando' 
        d = Downloads()
        d.FileFromUrl('http://www1.caixa.gov.br/loterias/_arquivos/loterias/D_megase.zip','m.zip')
        print 'Concluido'
    except Exception as e:
        print 'Erro' , e


Isso também resolve o erro gerado pela urllib2:

HTTP Error 302: The HTTP server returned a redirect error tha t would lead to an infinite loop.

Mais Populares

Seguidores

Є & V. Copyright 2011 Evaldo Avelar Marques - sprintrade network