urllib2 默认会使用环境变量 http_proxy 来设置 HTTP Proxy。
如果想在程序中明确控制 Proxy 而不受环境变量的影响,可以使用代理。
下面是一个Demo:
-
import urllib2
-
enable_proxy = True
-
proxy_handler = urllib2.ProxyHandler({"http" : ''})
-
null_proxy_handler = urllib2.ProxyHandler({})
-
if enable_proxy:
-
opener = urllib2.build_opener(proxy_handler)
-
else:
-
opener = urllib2.build_opener(null_proxy_handler)
-
urllib2.install_opener(opener) //可以没有这个调用
install_opener 用来创建(全局)默认opener。这个表示调用urlopen将使用你安装的opener。
Opener对象有一个open方法。
该方法可以像urlopen函数那样直接用来获取urls:通常不必调用install_opener,除了为了方便。
有的时候还需要记录cookie
可以使用add_hander()这个函数 ,在以上代码的基础上添加下面的代码:
-
cookie = cookielib.CookieJar()
-
#利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器
-
cookie_handler=urllib2.HTTPCookieProcessor(cookie)
-
-
opener.add_hander(cookie_hander)
此外,还可以给build_hander传入多个hannder, opener = URLlieb.build_hander(hander1,hander2,......)
阅读(1437) | 评论(0) | 转发(0) |