端口号 网址 处理 列表 err 函数 代理 cookies
python 使用代理访问服务器主要有一下 3 个步骤:
1. 创建一个代理处理器 ProxyHandler:
proxy_support = urllib.request.ProxyHandler(),ProxyHandler 是一个类,其参数是一个字典:{'类型':'代理 ip: 端口号'}
什么是 Handler?Handler 也叫作处理器,每个 handlers 知道如何通过特定协议打开 URLs,或者如何处理 URL 打开时的各个方面,例如 HTTP 重定向或者 HTTP cookies。
2. 定制、创建一个 opener:
opener = urllib.request.build_opener(proxy_support)
什么是 opener?python 在打开一个 url 链接时,就会使用 opener。其实,urllib.request.urlopen() 函数实际上是使用的是默认的 opener,只不过在这里我们需要定制一个 opener 来指定 handler。
3a. 安装 opener
urllib.request.install_opener(opener)
install_opener 用来创建(全局)默认 opener,这个表示调用 urlopen 将使用你安装的 opener。
3b. 调用 openeropener.open(url)
该方法可以像 urlopen 函数那样直接用来获取 urls:通常不必调用 install_opener,除了为了方便。
- >>> proxy_support = urllib.request.ProxyHandler({'http':'115.32.41.100:80'})
- >>> proxy_support
- <urllib.request.ProxyHandler object at 0x0000000002EE74A8>
- >>> opener = urllib.request.build_opener(proxy_support)
- >>> opener
- <urllib.request.OpenerDirector object at 0x0000000002F972B0>
- >>> opener.handlers
- [<urllib.request.ProxyHandler object at 0x0000000002EE74A8>, <urllib.request.UnknownHandler object at 0x0000000003197B38>, <urllib.request.HTTPHandler object at 0x0000000003197C18>, <urllib.request.HTTPDefaultErrorHandler object at 0x0000000003197CC0>, <urllib.request.HTTPRedirectHandler object at 0x0000000003197BA8>, <urllib.request.FTPHandler object at 0x0000000003197DD8>, <urllib.request.FileHandler object at 0x0000000003197E80>, <urllib.request.HTTPSHandler object at 0x0000000003197E48>, <urllib.request.HTTPErrorProcessor object at 0x0000000003197E10>]
- >>> opener.addheaders
- [('User-agent', 'Python-urllib/3.3')]
- >>> opener.addheaders = [('User-Agent','Test_Proxy_Python3.5_maminyao')]
- >>> opener.addheaders
- [('User-Agent', 'Test_Proxy_Python3.5_maminyao')]
- >>>
从代理 ip 列表中随机使用某 ip 去访问 URL 的例子
- import urllib.request
- import random
- url = 'http://www.whatismyip.com.tw'
- iplist = ['115.32.41.100:80','58.30.231.36:80','123.56.90.175:3128']
- proxy_support = urllib.request.ProxyHandler({'http':random.choice(iplist)})
- opener = urllib.request.build_opener(proxy_support)
- opener.addheaders = [('User-Agent','Test_Proxy_Python3.5_maminyao')]
- urllib.request.install_opener(opener)
- response = urllib.request.urlopen(url)
- html = response.read().decode('utf-8')
- print(html)
原网址:http://www.cnblogs.com/paomaliuju/p/5176461.html
python 使用代理访问服务器
来源: http://www.bubuko.com/infodetail-2019316.html