首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

Python 标准库 urllib2 的运用细节

2012-09-22 
Python 标准库 urllib2 的使用细节?Python 标准库中有很多实用的工具类,但是在具体使用时,标准库文档上对

Python 标准库 urllib2 的使用细节

?

Python 标准库中有很多实用的工具类,但是在具体使用时,标准库文档上对使用细节描述的并不清楚,比如 urllib2 这个 HTTP 客户端库。这里总结了一些 urllib2 库的使用细节。

?

  • 1 Proxy 的设置
  • 2 Timeout 设置
  • 3 在 HTTP Request 中加入特定的 Header
  • 4 Redirect
  • 5 Cookie
  • 6 使用 HTTP 的 PUT 和 DELETE 方法
  • 7 得到 HTTP 的返回码
  • 8 Debug Log1?Proxy 的设置

    urllib2 默认会使用环境变量 http_proxy 来设置 HTTP Proxy。如果想在程序中明确控制 Proxy,而不受环境变量的影响,可以使用下面的方式

    2?Timeout 设置

    在老版本中,urllib2 的 API 并没有暴露 Timeout 的设置,要设置 Timeout 值,只能更改 Socket 的全局 Timeout 值。

    3?在 HTTP Request 中加入特定的 Header

    要加入 Header,需要使用 Request 对象:

    4?Redirect

    urllib2 默认情况下会针对 3xx HTTP 返回码自动进行 Redirect 动作,无需人工配置。要检测是否发生了 Redirect 动作,只要检查一下 Response 的 URL 和 Request 的 URL 是否一致就可以了。

    5?Cookie

    urllib2 对 Cookie 的处理也是自动的。如果需要得到某个 Cookie 项的值,可以这么做:

    6?使用 HTTP 的 PUT 和 DELETE 方法

    urllib2 只支持 HTTP 的 GET 和 POST 方法,如果要使用 HTTP PUT 和 DELETE,只能使用比较低层的 httplib 库。虽然如此,我们还是能通过下面的方式,使 urllib2 能够发出 HTTP PUT 或 DELETE 的包:

    7?得到 HTTP 的返回码

    对于 200 OK 来说,只要使用 urlopen 返回的 response 对象的 getcode() 方法就可以得到 HTTP 的返回码。但对其它返回码来说,urlopen 会抛出异常。这时候,就要检查异常对象的 code 属性了:

    8?Debug Log

    使用 urllib2 时,可以通过下面的方法把 Debug Log 打开,这样收发包的内容就会在屏幕上打印出来,方便我们调试,在一定程度上可以省去抓包的工作。

    import urllib2?httpHandler = urllib2.HTTPHandler(debuglevel=1)httpsHandler = urllib2.HTTPSHandler(debuglevel=1)opener = urllib2.build_opener(httpHandler, httpsHandler)?urllib2.install_opener(opener)response = urllib2.urlopen('http://www.google.com')

    文章信息

    • 原创文章,转载请注明:转载自?道可道?|?Python 标准库 urllib2 的使用细节http://zhuoqiang.me/a/python-urllib2-usage
    • 版权声明 License:自由转载-非商用-非衍生-保持署名 |?Creative Commons BY-NC-ND 3.0

热点排行