1、urllib2:
urllib模块用于读取来自网上(服务器上)的数据。
主要使用的方法有:
- read(),readline(),readlines(),fileno(),close():都与文件操作一样,这里不再赘述。可以参考前面有关文件章节
- info():返回头信息
- getcode():返回http状态码
- geturl():返回url
对url编码、解码
url对其中的字符有严格要求,不许可某些特殊字符,这就要对url进行编码和解码了。这个在进行web开发的时候特别要注意。urllib模块提供这种功能。
- quote(string[, safe]):对字符串进行编码。参数safe指定了不需要编码的字符
- urllib.unquote(string) :对字符串进行解码
- quote_plus(string [ , safe ] ) :与urllib.quote类似,但这个方法用'+'来替换空格
' '
,而quote用'%20'来代替空格 - unquote_plus(string ) :对字符串进行解码;
- urllib.urlencode(query[, doseq]):将dict或者包含两个元素的元组列表转换成url参数。例如{'name': 'laoqi', 'age': 40}将被转换为"name=laoqi&age=40"
- pathname2url(path):将本地路径转换成url路径
- url2pathname(path):将url路径转换成本地路径
看例子就更明白了:
>>> du = "http://www.itdiffer.com/name=python book" >>> urllib.quote(du) 'http%3A//www.itdiffer.com/name%3Dpython%20book' >>> urllib.quote_plus(du) 'http%3A%2F%2Fwww.itdiffer.com%2Fname%3Dpython+book'
urlretrieve()
虽然urlopen()能够建立类文件对象,但是,那还不等于将远程文件保存在本地存储器中,urlretrieve()就是满足这个需要的。先看实例:
>>> import urllib >>> urllib.urlretrieve("http://www.itdiffer.com/images/me.jpg","me.jpg") ('me.jpg', <httplib.HTTPMessage instance at 0xb6ecb6cc>) >>>
urllib.urlretrieve(url[, filename[, reporthook[, data]]])
- url:文件所在的网址
- filename:可选。将文件保存到本地的文件名,如果不指定,urllib会生成一个临时文件来保存
- reporthook:可选。是回调函数,当链接服务器和相应数据传输完毕时触发本函数
- data:可选。如果用post方式所发出的数据