Python中包含了兩個網絡模塊,分別是urllib與urllib2,urllib2是urllib的升級版,擁有更強大的功能。urllib,讓咱們能夠像讀文件同樣,讀取http與ftp。而urllib2,則在urllib的基礎上,提供了更多的接口,如cookie、代理、認證等更強大的功能。php
urllib經常使用函數:html
一、urllib.urlopen(url[, data[, proxies]]): 打開一個網址,並返回一個相似於文件的對象,對於該對對象,咱們能夠執行如下操做。python
參數中的data,表示以post方式提交到web的參數,proxies用於設置代理,這兩個參數不多用到。web
二、urllib.urlretrieve(url[, filename[, reporthook[, data]]]): 將遠程數據下載到本地。url,是網址,filename表示的是本地路徑,用於存放下載的數據,reporthook,是一個回調函數,當鏈接到服務器時,或者得到數據時,將調用該函數,data,用於post的數據。緩存
三、urlcleanup()清除urlretrieve函數的緩存。服務器
四、urllib中的一些字符編碼的輔助函數cookie
針對上面的一個樣例:網絡
1 # coding : UTF-8 2 3 import urllib 4 import re 5 ''' 6 def getHtml(url): 7 urlFile = urllib.urlopen(url) 8 urllib.FancyURLopener 9 print urlFile.getcode() 10 return urlFile.read() 11 12 def getJpg(html): 13 reg = r'src="(http://.*?\.jpg)"' 14 index = 0 15 imgre = re.compile(reg) 16 jpgs = re.findall(imgre, html) 17 for x in jpgs: 18 print "url = %s %d.jpg\n" % (x, index) 19 urllib.urlretrieve(x, "C:\Users\Hawk\Desktop\jpg\%d.jpg" % index) 20 index = index + 1 21 22 23 html = getHtml(r"http://image.baidu.com/") 24 print "Game Over "*3 25 ''' 26 27 data = 'name = ~a+3' 28 29 data1 = urllib.quote(data) 30 print data1 # result: name%20%3D%20%7Ea%2B3 31 print urllib.unquote(data1) # result: name = ~a+3 32 33 data2 = urllib.quote_plus(data) 34 print data2 # result: name+%3D+%7Ea%2B3 35 print urllib.unquote_plus(data2) # result: name = ~a+3 36 37 data3 = urllib.urlencode({ 'name': 'dark-bull', 'age': 200 }) 38 print data3 # result: age=200&name=dark-bull 39 40 data4 = urllib.pathname2url(r'd:/a/b/c/23.php') 41 print data4 # result: ///D|/a/b/c/23.php 42 print urllib.url2pathname(data4) # result: D:/a/b/c/23.php
urllib2的經常使用函數:函數
一、urllib2.urlopen(url[, data][, timeout])與urllib的函數同樣post
二、urllib2.Request(url[, data][, headers][, origin_req_host][, unverifiable]),
url:是網址、文件路徑、ftp路徑
data:經過urllib.urlencode造成的字符串。
header:請求頭
後兩個參數:用於第三方的cookie,詳情可參看官網。http://docs.python.org/2/library/urllib2.html#urllib2.BaseHandler