python requests.get方法值得注意的一个问题

最近学习使用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()


Posted

in

,

by

Tags:

Comments

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注