我百思不得其解,本身思考以下:综合一、3,说明fake-useragent应该没问题的,综合三、4我怀疑这是知乎使用的一种反爬机制,故意将错误引到浏览器版本太低的网页,但实际问题并不在此,在这中间花了整整半天时间,后面我又想到用个人另一台电脑,而后将浏览器的useragent发送过来,而后使用发送过来的useragent从新请求知乎,发现并无异常。因而猛然想到fake-useragent中的useragent是随机提取出来的,是否是有的提取出来的useragent是比较老旧的,因此知乎识别处理啊,致使出现异常呢?为了验证本身的想法,我又用fake-useragent随机提取的useragent反复请求,有的能成功,有的提示浏览器版本低的异常,遂验证了个人想法。shell
综上:知乎是一个对浏览器版本要求很高的网站,不少旧版的浏览器都不能访问知乎,而fake-useragent内的请求头数据并无一直更新到最新,只能测试多个,而后选择可用的便可。浏览器
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/60.0'}
re = requests.get(url, headers=headers) re.encoding = re.apparent_encoding print(re.text)
报错以下:app
UnicodeEncodeError: 'latin-1' codec can't encode character '\u2026' in position 30: ordinal not in range(256)
此错误看着是编码错误,实际上不是,我换一个user-agent又能够了,其实这是由于浏览器在显示User-Agent属性时,应为属性值过长,因此使用了省略号,致使添加过程当中形成了编译错误。scrapy