urllib库
参考网上介绍
1. urllib.urlopen( url[ , data[ , proxies] ] )
创建一个远程url的类文件的对象,可以像本地文件一样操作这个类文件对象来获取远程数据。
url : 表示远程数据的路径,一般为网址
data : 以post方式提交到url的数据,较少用到
proxies : 用于设置代理
urlopen返回对象提供方法:
read(), readline(), readlines(), fileno(), close() : 这些方法的使用方式与文件对象完全一样
info() : 返回一个httplib.HTTPMessage对象,表示远程服务器返回的头信息
getcode() : 返回Http状态码。 pythone2.6版本以上
geturl() : 返回请求的url
import urllib url = "www.baidu.com" proxies = {'http' : 'http://www.someproxy.com:3128'} filehandle = urllib.urlopen(url, proxies = proxies) filehandle = urllib.urlopen(url) print filehandle.read() print filehandle.info() print filehandle.getcode() filehandle.close()
附带的其它方法: (主要是url编码解码)
urllib.quote(string[ , safe]) : 对字符串进行编码。参数safe指定了不需要编码的字符
urllib.unquote(string) : 对字符串进行解码
urllib.quote_plus(string[ , safe]) : 与urllib.quote类似,但这个方法用'+'来替换' ',而quote用'%20'来代替' '
urllib.unquote_plus(string ) :对字符串进行解码
urllib.urlencode(query[, doseq]):将dict或者包含两个元素的元组列表转换成url参数。例如 字典{'name': 'wklken', 'pwd': '123'}将被转换为"name=wklken&pwd=123"
urllib.pathname2url(path):将本地路径转换成url路径
urllib.url2pathname(path):将url路径转换成本地路径
# coding=gbk import urllib import sys s = "马伊琍" s2 = s.decode(sys.stdin.encoding).encode("utf8") keyword=urllib.quote(s2) page=urllib.urlopen("http://www.baidu.com/s?wd="+keyword+"&pn=100&rn=20&ie=utf-8&usm=4&rsv_page=1") print page.geturl() hfile = open("E:\\1.htm","w") hfile.write(page.read()) page.close() hfile.close()
2.urllib.urlretrieve(url[, filename[, reporthook[, data]]])
将远程数据下载到本地
filename指定保存到本地的路径(若未指定该,urllib生成一个临时文件保存数据)
reporthook回调函数,当连接上服务器、以及相应的数据块传输完毕的时候会触发该回调
data指post到服务器的数据
该方法返回一个包含两个元素的元组(filename, headers),filename表示保存到本地的路径,header表示服务器的响应头
import urllib s = urllib.urlretrieve("http://images.china.cn/news/attachement/jpg/site3/20111028/879003781387041495.jpg","E:\\1.jpg") for item in s: print item