urllib 和 urllib2 对比学习 笔记一
urlparse module 1. urlparse.urlunparse() complex tuple into ure 2. urlparse() split url into a fixed format.return tuple 3.urlparse.urljoin() #合并域名和根路径 urllib module 1.urllib.urlopen() open url and return file object method:(read/readline/readlines/info/geturl/close) 2.urllib.urlretrieve() download url to file 3.urllib.quote() urllib.quote(urldata,safe='/') #与url.unquote_plus() 4.urllib.urelencode() #接收字典的键值对,并将其编译成字符串,作为CGI请求的URL字符串的一部分. urlencode()里面必须是字典类型 urllib.urlopen() 通过url 获取远程数据 urlopen返回 一个类文件对象,它提供了如下方法: read() , readline() , readlines() , fileno() , close() :这些方法的使用方式与文件对象完全一样; info():返回一个httplib.HTTPMessage 对象,表示远程服务器返回的头信息 getcode():返回Http状态码。如果是http请求,200表示请求成功完成;404表示网址未找到; geturl():返回请求的url; urllib.urlretrieve 直接将远程数据下载到本地 参数说明: url:外部或者本地url filename:指定了保存到本地的路径(如果未指定该参数,urllib会生成一个临时文件来保存数据); reporthook:是一个回调函数,当连接上服务器、以及相应的数据块传输完毕的时候会触发该回调。我们可以利用这个回调函数来显示当前的下载进度。 data:指post到服务器的数据。该方法返回一个包含两个元素的元组(filename, headers),filename表示保存到本地的路径,header表示服务器的响应头。 urllib2: urllib2.urlopen() 同上 urllib2.request() Request总共三个参数,除了必须要有url参数,还有下面两个: 1.data(默认空):是伴随 url 提交的数据(比如要post的数据),同时 HTTP 请求将从 "GET"方式 改为 "POST"方式。 2.headers(默认空):是一个字典,包含了需要发送的HTTP报头的键值对 # add_header()方法添加/修改一个HTTP报头 request.add_header('User-Agent',user_agent#get_header()获取一个已有的HTTP报头的值,注意只能第一个字母大写,后面的要小写 print request.get_header('User-agent')) urllib和urllib2的主要区别 urllib和urllib2都是接受URL请求的相关模块,但是提供了不同的功能,最显著的区别如下: (1)urllib仅可以接受URL,不能创建,设置headers的request类实例; (2)但是urllib提供urlencode()方法用来GET查询字符串的产生,而urllib2则没有(这是urllib和urllib2经常一起使用的主要原因) (3)编码工作使用urllib的urlencode()函数,帮我们讲key:value这样的键值对转换成‘key=value’这样的字符串,解码工作可以使用urllib的unquote()