python urllib庫使用
阿新 • • 發佈:2019-01-05
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])
urllib.quote(string[,safe])將dict或者包含兩個元素的元組列表轉換成url引數。例如 字典{'name': 'brink', 'age': 20}將被轉換為"name=brink&age=20"
對字串進行編碼。引數safe指定了不需要編碼的字元。如:In [26]: urllib.quote("hello world")
Out[26]: 'hello%20world'
urllib.unquote(string)
urllib.urlcleanup()對字串進行解碼
清空urltrieve()的快取2016-10-18:這個庫似乎廢棄了,建議使用urllib2,python3的話可以用urllib。