Edición 09/2016: en Python 3 y versiones posteriores, use urllib.request en lugar de urllib2
En realidad, la forma más sencilla es:
import urllib2 # the lib that handles the url stuff
data = urllib2.urlopen(target_url) # it's a file like object and works just like a file
for line in data: # files are iterable
print line
Ni siquiera necesitas "readlines", como sugirió Will. Incluso podría acortarlo a: *
import urllib2
for line in urllib2.urlopen(target_url):
print line
Pero recuerde que en Python, la legibilidad es importante.
Sin embargo, esta es la forma más sencilla pero no segura porque la mayoría de las veces con la programación de red, no se sabe si se respetará la cantidad de datos esperada. Entonces, en general, es mejor que lea una cantidad fija y razonable de datos, algo que sepa que es suficiente para los datos que espera, pero que evitará que su script se inunde:
import urllib2
data = urllib2.urlopen("http://www.google.com").read(20000) # read only 20 000 chars
data = data.split("\n") # then split it into lines
for line in data:
print line
* Segundo ejemplo en Python 3:
import urllib.request # the lib that handles the url stuff
for line in urllib.request.urlopen(target_url):
print(line.decode('utf-8')) #utf-8 or iso8859-1 or whatever the page encoding scheme is
La biblioteca de solicitudes tiene una interfaz más simple y funciona con Python 2 y 3.
fuente
fuente
fuente
Otra forma en Python 3 es usar el paquete urllib3 .
Esta puede ser una mejor opción que urllib ya que urllib3 se jacta de tener
fuente
Para mí, ninguna de las respuestas anteriores funcionó directamente. En cambio, tuve que hacer lo siguiente (Python 3):
fuente
Solo actualizo aquí la solución sugerida por @ ken-kinder para que Python 2 funcione para Python 3:
fuente