urllib2中的两个重要概念 Openers和Handlers

1.urllib2的基本功能urlopen()
    这个方法返回一个request对象,栗子如下:

点击(此处)折叠或打开

  1. import urllib2

  2. req = urllib2.urlopen(url)
  3. realurl = req.geturl()
  4. info = req.info()
  5. code = req.getcode()
  6. print url
  7. print realurl
  8. print info
  9. print code
上面栗子中的url或者realurl可能会不同,因为初始连接可能会经过跳转。
2.urllib2中的opener
    我们能直接使用urllib2.urlopen(),是因为有一个默认的(default)opener对象,然而默认的它是适合普通应用的,如果要用一些高级点的功能像HTTPRedirectHandler、HTTPCookieProcessor,这时候就需要自定义一款opener啦,方法如下:

点击(此处)折叠或打开

  1. import urllib2

  2. newopener = urllib2.build_opener(xxxHandler, xxxHandler,...)
  3. req = newopener.open(url)
    或者把你需要的这些高级功能加入到默认的那个opener当中:

点击(此处)折叠或打开

  1. import urllib2

  2. newopener = urllib2.build_opener(xxxHandler,...)
  3. urllib2.install_opener(newopener)
  4. req = urllib2.urlopen(url)

3.urllib2 中的Handler
 OpenerDirector的对象openers使用各种Handler功能的对象方法handlers,所有的“繁重”工作由handlers处理。每个handlers知道如何通过特定协议打开URLs,或者如何处理URL打开时的各个方面。

参考链接:
https://docs.python.org/2/library/urllib2.html?highlight=urllib2#module-urllib2
http://www.jb51.net/article/57141.htm
http://www.nowamagic.net/academy/detail/1302879
http://www.jb51.net/article/46495.html

猜你喜欢

转载自blog.csdn.net/warrior_zhang/article/details/50503400
今日推荐