在https://blog.csdn.net/myli_binbin/article/details/99759031中提到,當使用自定義handler時,生成opener後,要調用opener的open方法去發送請求,這篇文章提到如何使用自定義handler後繼續使用urlopen方法發送請求
#!/usr/bin/env python # -*- coding:utf-8 -*- import urllib2 # 代理開關,表示是否啓用代理 proxyswitch = True # 構建一個Handler處理器對象,參數是一個字典類型,包括代理類型和代理服務器IP+PROT httpproxy_handler = urllib2.ProxyHandler({"http": "116.21.122.236:808"}) # 構建了一個沒有代理的處理器對象 nullproxy_handler = urllib2.ProxyHandler({}) if proxyswitch: opener = urllib2.build_opener(httpproxy_handler) else: opener = urllib2.build_opener(nullproxy_handler) # 構建了一個全局的opener,之後所有的請求都可以用urlopen()方式去發送,也附帶Handler的功能 urllib2.install_opener(opener) request = urllib2.Request("http://www.baidu.com/") response = urllib2.urlopen(request) print response.read()