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