urllib是一個是python的一個高級web模塊,它可以幫助我們快速的獲取網絡上的數據
今天對urllib庫的用法做一個簡單的總結.
urllib.urlopen(url[,data[,proxies[,context]]]) -> a file like object
本函數的作用是接受一個地址參數,打開該地址下的文件並返回一個類文件對象.
url參數一般是網址,也可以是本地文件(以file:標記開始),如果獲取失敗,引發IOError
異常,若成功,返回類文件對象
對於該對象可以使用read(), readline(), readlines(), fileno(), close(), info(), getcode() 和geturl()
方法訪問.
data參數是POST方式是需要傳遞給web服務器的數據,必須是標準的網絡數據格式,該格式可以使用urllib.urlencode()
方法生成.
proxies參數是代理服務器的設置
context參數是python2.79新增的,實在https
傳輸協議的時候需要的證書內容,參數類型是ssl.SSLcontext
類對象.
下邊用實例說明>>>url = 'http://www.baidu.com' >>> page = urllib.urlopen(url) >>>page.read()[0:100] '<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="content-type" content="text/html;charse' >>>print page.info() Date: Mon, 04 Jan 2016 01:59:50 GMT Content-Type: text/html; charset=utf-8 Connection: Close Vary: Accept-Encoding Set-Cookie: BAIDUID=407CA5585070D99F114F474BDF25B1DD:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com Set-Cookie: BIDUPSID=407CA5585070D99F114F474BDF25B1DD; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com Set-Cookie: PSTM=1451872790; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com Set-Cookie: BDSVRTM=0; path=/ Set-Cookie: BD_HOME=0; path=/ Set-Cookie: H_PS_PSSID=17746_1423_18726_18240_18534_17946_18731_18546_17000_17072_15888_12031; path=/; domain=.baidu.com P3P: CP=" OTI DSP COR IVA OUR IND COM " Cache-Control: private Cxy_all: baidu+c5bd5b617505e343d70a0efa4299eae3 Expires: Mon, 04 Jan 2016 01:58:54 GMT X-Powered-By: HPHP Server: BWS/1.1 X-UA-Compatible: IE=Edge,chrome=1 BDPAGETYPE: 1 BDQID: 0xfb6bb786001d1192 BDUSERID: 0
urllib.urlretrieve(url[,filename[,reporthook[,data]]]) -> (filename, header)
該函數可以將整個網頁內容拷貝到本地文件中,若成功,返回包含文件名和文件頭信息元組.若filename
參數缺省,則根據系統不同在不同位置生成臨時文件.>>>urllib.urlretrieve(url) ('/tmp/tmp6Wml60', <httplib.HTTPMessage instance at 0x7f57d005b5f0>)
(我是ubuntu14.04, 生成的臨時文件在/tmp目錄下,打開該文件就能看到百度主頁的源碼)
urllib.urlencode(query[,doseq]) -> percent-encoded string
將數據轉換成預編碼格式,該格式數據可以傳遞給urlopen()
函數使用.