2009-09-08 21 views

回答

80

其實最簡單的方法是:

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 

你甚至都不需要 「readlines方法」,作爲威爾建議。你甚至可以縮短到

import urllib2 

for line in urllib2.urlopen(target_url): 
    print line 

但是請記住,在Python中,可讀性很重要。

但是,這是最簡單的方法,但不是安全的方式,因爲大部分時間與網絡編程,你不知道數據量的預期將得到尊重。所以你一般都比較好讀取數據的固定和合理的金額,你知道的東西是夠你所期望的數據,但會阻止你的腳本被水淹沒:

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 

Edit 09/2016: In python 3 and up use urllib.request instead of urllib2

6
import urllib2 

f = urllib2.urlopen(target_url) 
for l in f.readlines(): 
    print l 
+2

+1,但請注意,這是最簡單的方法,而不是安全。如果在服務器端發生任何錯誤並且永遠存在這一個傳遞內容,那麼最終可能會出現無限循環。 – 2009-09-08 11:03:42

10
import urllib2 
for line in urllib2.urlopen("http://www.myhost.com/SomeFile.txt"): 
    print line 
22

真的沒有必要逐行閱讀。你可以得到整個事情是這樣的:

import urllib 
txt = urllib.urlopen(target_url).read() 
+0

它不起作用:_AttributeError:模塊'urllib'沒有屬性'urlopen'_ – 2018-02-16 09:06:44

3

我是一個新手到Python和副手評論有關的Python中接受的解決方案3撲朔迷離。對於後人,代碼在Python 3做,這是

import urllib.request 
data = urllib.request.urlopen(target_url) 

for line in data: 
    ... 

或可替代

from urllib.request import urlopen 
data = urlopen(target_url) 

注意,只是import urllib不起作用。

相關問題