最近学习使用python爬虫,于是使用这样的语句进行测试:
html = requests.get(‘http://baidu.com’, proxies={“http”: “http://{}”.format(proxy)}, headers=headers)
这里面proxy是通过接口获取到的代理IP和端口,print出来是这样的格式:
b’201.90.36.194:3128′
然后我发现requests.get就会报错,大概意思是把proxies parse出错了。

以上第二条代理IP,就是原来返回的代理IP格式。返回的错误大意是解析代理IP出错。
然而,如果我把语句改成:
html = requests.get(‘https://baidu.com’, proxies={“http”: “http://{}”.format(proxy)}, headers=headers)
也就是仅仅将要爬取的url换成https方式,就会正常。
实在百思不得其解,这点希望了解的点拨一下。
为了解决上述问题,我百度了一下,原来
b’201.90.36.194:3128′
这种返回的格式是以unicode编码的。
可以通过.decode().strip()转化一下,就成为
178.128.153.51:8080
这种格式了。
然后就正常了。
也就是将获取代理的语句:proxy = get_proxy()
修改为:
proxy = get_proxy().decode().strip()
发表回复