今天写一个爬取股票网站的爬虫,遇到了 TypeError:cannot use a string pattern on a bytes-like object 错误,这个问题查询了一下,说使用 html=html.decode('utf-8')#python3 就可以了,然后我想着对网页地址使用decode,但是这个问题一直都在,然后我将数据输出以后,发现了个问题:
我们使用代理的IP去访问该股票网站,因为我将代理存储在redis中,所以取出代理输出为 b'HTTP://120.25.203.182:7777' 说明代理是字节流类型的。发现了问题,这个报错并不是因为网页地址的问题,而是我们自己取得代理IP的问题,但是报错又不会报错在这里,修改如下:
#从redis中随机抽取一个IP地址
def getValidProxy(self):
red = redis.StrictRedis(host="127.0.0.1",port=6379)
validProxy = red.srandmember('kuaidaili_proxies').decode() #从kdl_proxies 这个key中随机取一个IP
print('当前使用的代理为:',validProxy)
return validProxy
我之前写得是 validProxy = red.srandmember('kuaidaili_proxies') ,在后面加上decode()问题就解决了。这个问题找了我好久,以后有问题输出相关数据看看是哪部分出了问题再想解决办法。