Edycja 09/2016: W Pythonie 3 i nowszych użyj urllib.request zamiast urllib2
Właściwie najprostszy sposób to:
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
Nie potrzebujesz nawet „readlines”, jak zasugerował Will. Możesz go nawet skrócić do: *
import urllib2
for line in urllib2.urlopen(target_url):
print line
Pamiętaj jednak, że w Pythonie liczy się czytelność.
Jest to jednak najprostszy sposób, ale nie bezpieczny, ponieważ przez większość czasu przy programowaniu sieciowym nie wiadomo, czy ilość danych, których można się spodziewać, zostanie uwzględniona. Więc ogólnie lepiej czytać stałą i rozsądną ilość danych, coś, co wiesz, że wystarczy dla danych, których oczekujesz, ale zapobiegnie zalaniu skryptu:
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
* Drugi przykład w Pythonie 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
Biblioteka wnioski ma prostszy interfejs i działa zarówno Python 2 i 3.
źródło
źródło
źródło
Innym sposobem w Pythonie 3 jest użycie pakietu urllib3 .
Może to być lepsza opcja niż urllib, ponieważ urllib3 chwali się posiadaniem
źródło
Dla mnie żadna z powyższych odpowiedzi nie działała od razu. Zamiast tego musiałem wykonać następujące czynności (Python 3):
źródło
Aktualizuję tutaj rozwiązanie sugerowane przez @ ken-kinder, aby Python 2 działał z Pythonem 3:
źródło