2010-01-07 17 views

Respuesta

42

usando urllib.request es probablemente la forma más sencilla de hacerlo:

import urllib.request 
f = urllib.request.urlopen("http://stackoverflow.com") 
print(f.read()) 
+0

Intenté eso y obtuve el objeto "AttributeError: 'module' no tiene ningún atributo 'urlopen'" – BiscottiGummyBears

+1

En realidad, el módulo correcto para importar es urllib2. –

+1

Lo siento, me di cuenta de que estaba usando Python 3. He actualizado mi ejemplo para que coincida. –

0

añadir este código que puede formatear los datos para la lectura humana:

text = f.read().decode('utf-8') 
2

También puede utilizar la biblioteca de solicitudes. Encontré esto particularmente útil porque era más fácil recuperar y mostrar el encabezado HTTP.

import requests 

source = 'http://www.pythonlearn.com/code/intro-short.txt' 

r = requests.get(source) 

print('Display actual page\n') 
for line in r: 
    print (line.strip()) 

print('\nDisplay all headers\n') 
print(r.headers) 
+0

¿Es este Python 3? –

+0

¿Esto funcionará para Python 3? –

2

Uso integrado en el módulo "http.client"

import http.client 

connection = http.client.HTTPSConnection("api.bitbucket.org", timeout=2) 
connection.request('GET', '/2.0/repositories') 
response = connection.getresponse() 
print('{} {} - a response on a GET request by using "http.client"'.format(response.status, response.reason)) 
content = response.read().decode('utf-8') 
print(content[:100], '...') 

Resultado:

200 OK - a response on a GET request by using "http.client" {"pagelen": 10, "values": [{"scm": "hg", "website": "", "has_wiki": true, "name": "tweakmsg", "links ...

uso de la biblioteca de terceros "peticiones"

response = requests.get("https://api.bitbucket.org/2.0/repositories") 
print('{} {} - a response on a GET request by using "requests"'.format(response.status_code, response.reason)) 
content = response.content.decode('utf-8') 
print(content[:100], '...') 

Resultado:

200 OK - a response on a GET request by using "http.client" {"pagelen": 10, "values": [{"scm": "hg", "website": "", "has_wiki": true, "name": "tweakmsg", "links ...

Uso integrado en el módulo "urllib.request"

response = urllib.request.urlopen("https://api.bitbucket.org/2.0/repositories") 
print('{} {} - a response on a GET request by using "urllib.request"'.format(response.status, response.reason)) 
content = response.read().decode('utf-8') 
print(content[:100], '...') 

Resultado:

200 OK - a response on a GET request by using "http.client" {"pagelen": 10, "values": [{"scm": "hg", "website": "", "has_wiki": true, "name": "tweakmsg", "links ...

Notas:

  1. Python 3.4
  2. resultado de las respuestas más probable que se diferencian sólo el contenido
0

https://stackoverflow.com/a/41862742/8501970 mira esto en su lugar. Es sobre el mismo problema que tiene y este es muy simple y muy pocas líneas de códigos. Esto me ayudó cuando me di cuenta de que python3 no puede usar simplemente get_page.

Esta es una buena alternativa. (espero que esto ayude, ¡salud!)