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