Página Inicial Python Python: Usando urllib2

Python: Usando urllib2

O urllib2 é um módulo do Python que define funções e classes(Objetos) que manipulam URL(s), seja ela uma URL simples baseado no protocolo HTTP, autenticação Digest, envio de dados GET e POST download de arquivos, cookies, sessão etc.

Para a manipulação de dados pela internet ou recursos para um servidor em intranet, a utilização deste módulo é essencial para o funcionamento de sua aplicação.

A versão mais recente de Python 3.x urllib2 foi dividida em varios outros módulos como urllib.request e urllib.error

Abaixo algumas classes e métodos utilizados nos exemplos:

  • urllib2.urlopen(url[, data][, timeout])
  • urllib2.Request(url[, data][, headers][, origin_req_host][, unverifiable])
  • urllib2.read()
  • urllib2.close()
  • urllib2.URLError
  • urllib2.HTTPError
  • urllib.urlencode(query[, doseq])
  • re.search(string[, pos[, endpos]])
  • os.path.exists(path)
  • os.system(command)
  • os.fchmod(fd, mode)

Abaixo segue alguns exemplos da utilização deste módulo.

Requisitando Conteúdo HTTP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from urllib2 import URLError
from urllib2 import HTTPError
import urllib2

try:
    request = urllib2.Request("http://www.nacaolivre.com.br/")    

    # Abre a conexão
    fd = urllib2.urlopen(request)

    # Efetua a leitura do conteúdo.
    content = fd.read()
    fd.close()
    print(content)

except HTTPError, e:
    print("Ocorreu um erro ao requisitar o conteúdo do servidor!\n")
    print("Cod.: ", e.code)
   
except URLError, e:
    print("URL inválido!\n")
    print("Mensagem: ", e.reason)

Enviando Dados HTTP GET

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
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from urllib2 import URLError
from urllib2 import HTTPError
import urllib2
import urllib

try:        

    # Objeto contendo os dados para envio ao servidor.
    data = urllib.urlencode({
        "name": "Teste t. Teste",
        "address": "Teste, 555",
        "country": "Brasil",
        "phone": "(55) 5555-5555",
    })

    url = "http://www.nacaolivre.com.br/index.php" % data

    f = urllib2.urlopen(url)

    contents = f.read()
    f.close()
    print contents

except HTTPError, e:
    print("Ocorreu um erro ao requisitar o conteúdo do servidor!\n")
    print("Cod.: ", e.code)
   
except URLError, e:
    print("URL inválido!\n")
    print("Mensagem: ", e.reason)

Enviando Dados HTTP POST

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
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from urllib2 import URLError
from urllib2 import HTTPError
import urllib2
import urllib

try:        

    # Objeto contendo os dados para envio ao servidor.
    data = urllib.urlencode({
        "name": "Teste t. Teste",
        "address": "Teste, 555",
        "country": "Brasil",
        "phone": "(55) 5555-5555",
    })

    url = "http://www.nacaolivre.com.br/index.php"

    # A grande diferença em relação a envio de dados GET está aqui
    # o segundo parametro do método.
    f = urllib2.urlopen(url, data)

    contents = f.read()
    f.close()
    print contents

except HTTPError, e:
    print("Ocorreu um erro ao requisitar o conteúdo do servidor!\n")
    print("Cod.: ", e.code)
   
except URLError, e:
    print("URL inválido!\n")
    print("Mensagem: ", e.reason)

Download de Arquivo

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
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from urllib2 import URLError
from urllib2 import HTTPError
import urllib2
import os
import re

# Abre a página para verificação dos links necessários para efetuar download dos arquivos
# de instalação do wenmin, virtualmin e thema
request = urllib2.Request("http://www.webmin.com/download.html")

fd = urllib2.urlopen(request)


# Read the results back.
s1 = fd1.read()

link_webmin = re.search("(http\:\/\/prdownloads\.sourceforge\.net\/webadmin\/webmin).*?(all.deb)", s1)

# Encerra o descritor de arquivo fd1, fd2
fd1.close()

# Verifica a existencia do arquivo webmin para download
if(not link_webmin.group(0)):
    print("Arquivo Webmin: não encontrado para download")

else:
    print("Arquivo Webmin: " + link_webmin.group(0) + "[ encontrado ]\n");
    print("Efetuando Download: " + link_webmin.group(0) + "... \n");

    if(not os.path.exists("downloads/" + os.path.basename(link_webmin.group(0)))):
        os.system("wget -P downloads " + link_webmin.group(0))

    if(os.path.exists("downloads/" + os.path.basename(link_webmin.group(0)))):
        os.chmod("downloads/" + os.path.basename(link_webmin.group(0)), 0777)
        print(" [ ok ]\n")

print(os.path.basename(link_webmin.group(0)))
  1. Paulo
    22, agosto, 2011 em 15:21 | #1

    Muitooo bom o site mano ushaushsa principalmente essa postagem.

    Ajuda muito pra fazer brute force =)

  1. Nenhum trackback ainda.

Deixe seu Comentário !