1. 程式人生 > >python urllib庫使用

python urllib庫使用

urllib是python中的內建庫,為從全球資訊網中抓取資料提供相關的介面。在使用python編寫爬蟲時經常會接觸到這個庫。

下面介紹一下urllib庫中的一些方法及相應的例項。

urllib.urlopen(url[, data[, proxies]]) :

其中url引數表示遠端的一個路徑,data表示用於post方式傳遞到url的資料,proxies用於設定代理。該方法返回一個表示遠端url的file-like物件。該物件擁有以下方法:
  • read() , readline() , readlines() , fileno() ,close() :這些方法的使用方式與檔案物件完全一樣
  • info():返回一個httplib.HTTPMessage 物件,表示遠端伺服器返回的頭資訊
  • getcode():返回http狀態碼。如200、404、403等。
  • geturl():返回請求的url,因為有時候伺服器會將client重定向至另一個url
例項:
r=urllib.urlopen("http://www.baidu.com/")
print 'http headers:',r.info()
print 'http status:',r.getcode()
print 'url:',r.geturl()
print 'contents:',r.read()

urllib.urlretrieve(url[, filename[, reporthook[, data]]]):

urlretrieve方法直接將遠端資料下載到本地。引數url表示遠端檔案的地址;引數filename指定了儲存到本地的路徑(如果未指定該引數,urllib會生成一個臨時檔案來儲存資料);引數reporthook是一個回撥函式,當連線上伺服器、以及相應的資料塊傳輸完畢的時候會觸發該回調,如可以利用這個回撥函式來顯示當前的下載進度。引數data指post到伺服器的資料。該方法返回一個包含兩個元素的元組(filename, headers),filename表示儲存到本地的路徑,header表示伺服器的響應頭。

urllib.urlencode(query[, doseq])

將dict或者包含兩個元素的元組列表轉換成url引數。例如 字典{'name': 'brink', 'age': 20}將被轉換為"name=brink&age=20"

urllib.quote(string[,safe])
對字串進行編碼。引數safe指定了不需要編碼的字元。如:In [26]: urllib.quote("hello world")

Out[26]: 'hello%20world'

urllib.unquote(string) 

對字串進行解碼

urllib.urlcleanup()
清空urltrieve()的快取
2016-10-18:這個庫似乎廢棄了,建議使用urllib2,python3的話可以用urllib。