Pergunta

Estou tendo poucos problemas para criar um script trabalhando com URLs. Estou usando urllib.urlopen () para obter o conteúdo do URL desejado. Mas alguns desses URLs exigem autenticação. E Urlopen me leva a digitar meu nome de usuário e senha. O que eu preciso é ignorar todos os URL que exigirão autenticação, apenas pular e continuar facilmente, existe uma maneira de fazer isso? Eu estava me perguntando sobre a captura de exceção do httperror, mas, de fato, a exceção é tratada pelo método Urlopen (), por isso não está funcionando.

Obrigado por cada resposta.

Foi útil?

Solução

Você está certo sobre o urllib2.HTTPError exceção:

exception urllib2.HTTPError

Embora seja uma exceção (uma subclasse de urlerror), um httperror também pode funcionar como um valor de retorno não excepcional em forma de arquivo (a mesma coisa que o urlopen () retorna). Isso é útil ao lidar com erros HTTP exóticos, como solicitações de autenticação.

code

Um código de status HTTP, conforme definido no RFC 2616. Esse valor numérico corresponde a um valor encontrado no dicionário de códigos, conforme encontrado em basehttpServer.basehttprequesthandler.Responses.

O atributo de código da exceção pode ser usado para verificar se é necessário autenticação - código 401.

>>> try: 
...     conn = urllib2.urlopen('http://www.example.com/admin')
...     # read conn and process data
... except urllib2.HTTPError, x:
...     print 'Ignoring', x.code
...     
Ignoring 401
>>> 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top