• urllib2


    与urllib的区别

    urllib2提供了Request,可以更好的表达请求,可以定制url的头,提供更强大的功能,可以处理cookie, 鉴权可定制化,头信息的格式为字典

    urllib2不能完全替代urllib:urllib.urlencode()这个方法在urllib2没有所以一般urllib和urllib2混用


    urllib2.urlopen() 超时时间,时间内链接不到远程服务器就会直接报错
    还可以捕获HTTPError错误



    urllib2.Request()  



    urlopen不仅可以接受一个url作为参数,还可以接受一个Request对象作为参数



    还提供了比较重要的接口
    build_opener   可以让我们定制Http行为,它有一个open方法和urlopen同样效果

    参数Handler列表
    当Http请求应答回来的时候会像管道一样依次执行HTTPHandler,HTTPSHander,HTTPCookieProcessor
    返回openerDirector里面有open()方法处理原来链接里面的数据

    BaseHandler为

    使用什么代理
    不知道什么协议
    处理HTTP请求
    处理错误请求
    处理跳转
    支持FTP协议
    支持本地文件打开
    处理HTTP错误
    处理ssl
    当调用urllib2.urlopen()的时候会调用系统默认创建的Handler链


    urllib2.HTTPHandler(debuglevel=1)
    会把HTTP请求跟服务器交互信息都打印出来

    等于说是在Request头信息包括data信息都设置好,然后在build_opener下面的open打开,而build_opener可以定制HTTPHandler等信息,如这个例子显示跟服务器交互的信息,



    opener保存为全局使用
        

    所以我认为bulid_opener就是对urlopen的封装,可以使用它的install_opener对全局的opener进行同样处理



    cookies处理
    cookie是网页交互过程中很重要的隐式数据,有服务器生成保存在客户端,客户端请求时把cookie返回给服务器,服务器再进行解析。    

    比如说登录的之后,服务器生成cookie,客户端通过cookie告诉服务端已经登录上去了


    HTTPCookieProcessor是Basehandler的子类


    cookie的加法跟request 的加法不同,只需要加载头信息就可以了

    cookie在handler当中加载
    这里的open是带有cookie的信息的,第一次是open是返回到客户端,随后在用open的时候
    会将cookie自动上传到服务器,所以只需要在开始open一次,想登录验证一次就可以一直出于登录的状态了,cookie就相当于是登录凭证










































  • 相关阅读:
    iOS __weak学习碰到的疑问
    Shiro整合SSH开发3:配置Shiro认证后页面地址跳转问题(和详述不配置须要注意的问题)
    Android Hawk数据库 github开源项目
    2015小米暑期实习笔试题_风口的猪-中国牛市(dp)
    opencv源代码之中的一个:cvboost.cpp
    regAsm的历史问题
    Spark核心概念理解
    linux的fork()函数具体解释 子进程复制父进程什么
    java8 Optional使用总结
    maven 项目报错org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)解决
  • 原文地址:https://www.cnblogs.com/wuqingzangyue/p/5749874.html
Copyright © 2020-2023  润新知