Esta duda se puede resolver de diferentes maneras, pero en este caso te mostramos la que para nosotros es la solución más completa.
Solución:
Para responder tu pregunta:
import urllib
link = "http://www.somesite.com/details.pl?urn=2344"
f = urllib.urlopen(link)
myfile = f.read()
print(myfile)
Necesitas read()
no readline()
EDITAR (2018-06-25): Desde Python 3, el legado urllib.urlopen()
fue reemplazado por urllib.request.urlopen()
(ver notas de https://docs.python.org/3/library/urllib.request.html#urllib.request.urlopen para más detalles).
Si está usando Python 3, vea las respuestas de Martin Thoma o innm dentro de esta pregunta: https://stackoverflow.com/a/28040508/158111 (Compatible con Python 2/3) https://stackoverflow.com/a/45886824 /158111 (Python 3)
O simplemente obtenga esta biblioteca aquí: http://docs.python-requests.org/en/latest/ y utilícela seriamente 🙂
import requests
link = "http://www.somesite.com/details.pl?urn=2344"
f = requests.get(link)
print(f.text)
Para python3
usuarios, para ahorrar tiempo, usen el siguiente código,
from urllib.request import urlopen
link = "https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html"
f = urlopen(link)
myfile = f.read()
print(myfile)
Sé que hay diferentes hilos de error: Name Error: urlopen is not defined
pero pensé que esto podría ahorrar tiempo.
Ninguna de estas respuestas es muy buena para Python 3 (probado en la última versión en el momento de esta publicación).
Así es como lo haces…
import urllib.request
try:
with urllib.request.urlopen('http://www.python.org/') as f:
print(f.read().decode('utf-8'))
except urllib.error.URLError as e:
print(e.reason)
Lo anterior es para contenidos que devuelven ‘utf-8’. Elimine .decode(‘utf-8’) si desea que Python “adivine la codificación adecuada”.
Documentación: https://docs.python.org/3/library/urllib.request.html#module-urllib.request
Si posees alguna indecisión o forma de aclararse nuestro tutorial puedes ejecutar una acotación y con gusto lo interpretaremos.