(Python)python3.7以后requests模块proxy(代理)失效问题解决方案ProxySchemeUnknown: Not supported proxy scheme None

最近在使用requests模块写爬虫的时候,使用到了代理服务proxy,出现了不支持代理方案的错误,即如下的报错:ProxySchemeUnknown Traceback (most recent call last) ProxySchemeUnknown: Not supported proxy scheme None。

原因:

通过排查发现了原因,就是在Python3.6以后,在使用代理时,requests.get(url=url, headers=headers, proxies=…)中proxies的参数值发生了变化,3.6包括之前,proxies={‘https’: ‘127.0.0.1:8080’}或者proxies={‘http’: ‘127.0.0.1:8080’}即可,但是这样的字典类型并不适用于Python3.7及以上的版本。在Python3.7及以上版本,必须要在ip:port前面加上http://或者https://,绝对不能去掉前面的http://或者https://,即Python3.7后必须使用proxies={‘http’: ‘http://127.0.0.1:8080’}或者proxies={‘https’: ‘https://127.0.0.1:8080’}

#Python3.6 不需要加http://
proxy_pool = {
	'http': '127.0.0.1:8080',
	'https': '127.0.0.1:8080',
}
response = requests.get(url=url, headers=headers, proxies=random.choice(proxy_pool)) #proxies={'http': '127.0.0.1:8080'}

#Python3.7及以上 必须加上http://,不加就会报错
proxy_pool = {
	'http': 'http://127.0.0.1:8080',
	'https': 'https://127.0.0.1:8080',
}
response = requests.get(url=url, headers=headers, proxies=random.choice(proxy_pool)) #proxies={'http': 'http://127.0.0.1:8080'}

总结:

在Python3.7及以上版本中基于requests模块使用代理,传给proxies的参数值必须加上http://或者https://,不加就会报错,proxies的参数值为{'http': 'http://ip:port'}键值对类型的字典
`

你可能感兴趣的:(爬虫,python,编程,python,proxy,ProxySchemeUnkn,requestsproxies,python,proxy)