Python contém um módulo chamado urllib para lidar com tarefas relacionadas ao Localizador Uniforme de Recursos (URL). Este módulo é instalado no Python 3 por padrão e busca URLs de diferentes protocolos por meio do urlopen () função. Urllib pode ser usado para muitas finalidades, como ler o conteúdo do site, fazer solicitações HTTP e HTTPS, enviar cabeçalhos de solicitação e recuperar cabeçalhos de resposta. O urllib módulo contém muitos outros módulos para trabalhar com URLs, como urllib.solicitação, urllib.analisar, e urllib.erro, entre outros. Este tutorial mostrará como usar o módulo Urllib em Python.
Exemplo 1: abrindo e lendo URLs com urllib.solicitação
O urllib.solicitação módulo contém as classes e métodos necessários para abrir e ler qualquer URL. O seguinte script mostra como usar urllib.solicitação módulo para abrir um URL e ler o conteúdo do URL. Aqui o urlopen () método é usado para abrir o URL, “https: // www.linuxhint.com /.”Se a URL for válida, o conteúdo da URL será armazenado na variável de objeto chamada resposta. O leitura() método do resposta objeto é então usado para ler o conteúdo do URL.
#!/ usr / bin / env python3# Módulo de solicitação de importação de urllib
importar urllib.solicitação
# Abra o URL específico para leitura usando urlopen ()
resposta = urllib.solicitação.urlopen ('https: // www.linuxhint.com / ')
# Imprima os dados de resposta do URL
print ("A saída do URL é: \ n \ n", resposta.leitura())
Resultado
A seguinte saída aparecerá após a execução do script.
Exemplo 2: análise e não análise de URLs com urllib.analisar
O urllib.analisar módulo é usado principalmente para separar ou juntar os diferentes componentes de um URL. O script a seguir mostra diferentes usos do urllib.analisar módulo. As quatro funções de urllib.analisar usado no seguinte script incluem urlparse, urlunparse, urlsplit, e urlunsplit. O urlparse módulo funciona como urlsplit, e a urlunparse módulo funciona como urlunsplit. Existe apenas uma diferença entre essas funções; isso é, urlparse e urlunparse contém um parâmetro extra chamado 'params'para a divisão e a função de união. Aqui, o URL 'https: // linuxhint.com / play_sound_python / 'é usado para dividir e juntar o URL.
#!/ usr / bin / env python3# Importar módulo de análise de urllib
importar urllib.analisar
# Analisando URL usando urlparse ()
urlParse = urllib.analisar.urlparse ('https: // linuxhint.com / play_sound_python / ')
print ("\ nO resultado do URL após a análise: \ n", urlParse)
# URL de associação usando urlunparse ()
urlUnparse = urllib.analisar.urlunparse (urlParse)
print ("\ nO resultado de junção do URL de análise: \ n", urlUnparse)
# Analisando URL usando urlsplit ()
urlSplit = urllib.analisar.urlsplit ('https: // linuxhint.com / play_sound_python / ')
print ("\ nO resultado do URL após a divisão: \ n", urlSplit)
# URL de associação usando urlunsplit ()
urlUnsplit = urllib.analisar.urlunsplit (urlSplit)
print ("\ nO resultado de junção do URL de divisão: \ n", urlUnsplit)
Resultado
As quatro saídas a seguir aparecerão após a execução do script.
Exemplo 3: Lendo o cabeçalho da resposta de HTML com urllib.solicitação
O script a seguir mostra como as diferentes partes do cabeçalho de resposta do URL podem ser recuperadas por meio do info () método. O urllib.solicitação módulo usado para abrir o URL, 'https: // linuxhint.com / python_pause_user_input /,'e as informações do cabeçalho deste URL são impressas por meio do info () método. A próxima parte deste script mostrará como ler cada parte do cabeçalho separadamente. Aqui o Servidor, Data, e Tipo de conteúdo os valores são impressos separadamente.
#!/ usr / bin / env python3# Módulo de solicitação de importação de urllib
importar urllib.solicitação
# Abra o URL para leitura
urlResponse = urllib.solicitação.urlopen ('https: // linuxhint.com / python_pause_user_input / ')
# Leitura da saída do cabeçalho de resposta do URL
imprimir (urlResponse.info ())
# Lendo as informações do cabeçalho separadamente
print ('Servidor de resposta =', urlResponse.info () ["Servidor"])
print ('A data de resposta é =', urlResponse.info () ["Data"])
print ('Tipo de conteúdo de resposta é =', urlResponse.info () ["Content-Type"])
Resultado
A seguinte saída aparecerá após a execução do script.
Exemplo 4: Lendo respostas de URL linha por linha
Um endereço de URL local é usado no seguinte script. Aqui, um arquivo HTML de teste chamado teste.html é criado no local, var /www / html. O conteúdo deste arquivo é lido linha por linha por meio do para ciclo. O faixa() método é então usado para remover o espaço de ambos os lados de cada linha. Você pode usar qualquer arquivo HTML do servidor local para testar o script. O conteúdo do teste.html arquivo usado neste exemplo é dado abaixo.
teste.html:
Página de teste
#!/ usr / bin / env python3
# Import urllib.módulo de solicitação
importar urllib.solicitação
# Abra um url local para leitura
resposta = urllib.solicitação.urlopen ('http: // localhost / test.html ')
# Leia o URL da resposta
imprimir ('URL:', resposta.geturl ())
# Leia o texto de resposta linha por linha
imprimir ("\ nLendo conteúdo:")
para linha em resposta:
imprimir (linha.faixa())
Resultado
A seguinte saída aparecerá após a execução do script.
Exemplo 5: tratamento de exceções com urllib.erro.URLError
O script a seguir mostra como usar o URLError em Python através do urllib.erro módulo. Qualquer endereço de URL pode ser considerado uma entrada do usuário. Se o endereço não existir, então um URLError a exceção será gerada e o motivo do erro será impresso. Se o valor do URL estiver em um formato inválido, um ValueError será gerado e o erro personalizado será impresso.
#!/ usr / bin / env python3# Importe os módulos necessários
importar urllib.solicitação
importar urllib.erro
# tente bloquear para abrir qualquer URL para leitura
tentar:
url = input ("Insira qualquer endereço URL:")
resposta = urllib.solicitação.urlopen (url)
imprimir (resposta.leitura())
# Capture o erro de URL que será gerado ao abrir qualquer URL
exceto urllib.erro.URLError como e:
imprimir ("Erro de URL:", e.razão)
# Capture o erro de URL inválido
exceto ValueError:
imprimir ("Digite um endereço de URL válido")
Resultado
O script é executado três vezes na imagem a seguir. Na primeira iteração, o endereço URL é fornecido em um formato inválido, gerando um ValueError. O endereço URL fornecido na segunda iteração não existe, gerando um URLError. Um endereço de URL válido é fornecido na terceira iteração, e assim o conteúdo do URL é impresso.
Exemplo 6: tratamento de exceções com urllib.erro.Erro HTTP
O script a seguir mostra como usar o Erro HTTP em Python através do urllib.erro módulo. A HTMLError é gerado quando o endereço URL fornecido não existe.
#!/ usr / bin / env python3# Importe os módulos necessários
importar urllib.solicitação
importar urllib.erro
# Aceita qualquer URL válido
url = input ("Insira qualquer endereço URL:")
# Enviar pedido para o URL
request = urllib.solicitação.Solicitar (url)
tentar:
# Tente abrir o URL
urllib.solicitação.urlopen (pedido)
imprimir ("URL existe")
exceto urllib.erro.HTTPError como e:
# Imprima o código e o motivo do erro
print ("Código do erro:% d \ n Motivo do erro:% s"% (e.código, e.razão))
Resultado
Aqui, o script é executado duas vezes. O primeiro endereço URL considerado como entrada existe e o módulo imprimiu uma mensagem. O segundo endereço de URL considerado como a entrada não existe e o módulo gerou o Erro HTTP.
Conclusão
Este tutorial discutiu muitos usos importantes do urllib módulo usando vários exemplos para ajudar os leitores a conhecer as funções deste módulo em Python.