zoukankan      html  css  js  c++  java
  • Python urllib2 模块学习笔记

    2015.3.6

     urllib2的使用方法大致如下

    # 定制Handler处理函数
    opener = urllib2.build_opener(ProxyHandler, HTTPHandler)
    urllib2.install_opener(opener)
     
    # 定制URL参数
    request = urllib2.Request()
    request.add_headers(xxx)
     
    # 打开URL,返回file-like对象
    response = urllib2.urlopen(req)
     
    # 获得结果
    print response.read()
     

    关键的处理机制分析

     

    urlopen()

    是处理的入口函数。
    获取  OpenerDirector 对象,调用 Opener.open()。
    默认的OpenerDirector 对象保存在变量 _open中。
    采用了Singleton模式。
     
    build_opener()
    是一个对象工厂函数,创建OpenerDirector对象。
    内部提供了默认的handler列表,函数传入的handler参数取代默认的handlers。
    调用OpenerDirector.add_handler()函数,注册handlers。先注册默认的handler,再注册定制的handler。按照在参数中的顺序进行注册。
     
    install_opener()
    将OpenerDirector对象保存到变量_opener中,作为默认opener使用。
     
    class OpenerDirector
    采用了Composite模式。
    add_handler():注册handler对象到内部列表中。
    open():调用handler列表中每个对象的open方法,触发处理操作。
     
    class Request
    作为一个信息对象,保存和url相关的参数,包括headers、data、proxy等。用于url参数的传递。
     
    class HTTPHandler
    类继承关系:BaseHandler -> AbstractHTTPHandler -> HTTPHandler
    调用 httplib.HTTPConnection 完成 HTTP的处理。
  • 相关阅读:
    GNU make manual 翻译(九十九)
    GNU make manual 翻译( 九十五)
    Shell的 for 循环小例子
    makefile中对目录遍历的小例子
    GNU make manual 翻译(九十三)
    GNU make manual 翻译( 一百)
    GNU make manual 翻译( 九十七)
    GNU make manual 翻译( 九十八)
    mapserver4.8.3 的readme.win32的中文翻译文件
    遥控器编程
  • 原文地址:https://www.cnblogs.com/weichsel/p/4321025.html
Copyright © 2011-2022 走看看