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()
原文地址:https://www.cnblogs.com/lusix/p/10676948.html