Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1589713
  • 博文数量: 695
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4027
  • 用 户 组: 普通用户
  • 注册时间: 2013-11-20 21:22
文章分类

全部博文(695)

文章存档

2018年(18)

2017年(74)

2016年(170)

2015年(102)

2014年(276)

2013年(55)

分类: Python/Ruby

2015-12-10 14:35:00

urllib2 默认会使用环境变量 http_proxy 来设置 HTTP Proxy。

如果想在程序中明确控制 Proxy 而不受环境变量的影响,可以使用代理。

下面是一个Demo:


点击(此处)折叠或打开

  1. import urllib2
  2. enable_proxy = True
  3. proxy_handler = urllib2.ProxyHandler({"http" : ''})
  4. null_proxy_handler = urllib2.ProxyHandler({})
  5. if enable_proxy:
  6.     opener = urllib2.build_opener(proxy_handler)
  7. else:
  8.     opener = urllib2.build_opener(null_proxy_handler)
  9. urllib2.install_opener(opener)  //可以没有这个调用
install_opener 用来创建(全局)默认opener。这个表示调用urlopen将使用你安装的opener。

Opener对象有一个open方法。

该方法可以像urlopen函数那样直接用来获取urls:通常不必调用install_opener,除了为了方便。

有的时候还需要记录cookie
可以使用add_hander()这个函数 ,在以上代码的基础上添加下面的代码:

点击(此处)折叠或打开

  1. cookie = cookielib.CookieJar()
  2. #利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器
  3. cookie_handler=urllib2.HTTPCookieProcessor(cookie)

  4. opener.add_hander(cookie_hander)
此外,还可以给build_hander传入多个hannder, opener = URLlieb.build_hander(hander1,hander2,......)


阅读(1384) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~