今天学习python爬虫是遇到了字符编码的问题
target = 'http://www.biqukan.com/1_1094/5403177.html'
req = requests.get(url=target)
print req.text
打印出来的中文都是乱码,现在说一下解决方案。
首先要明确的是,req.text返回的是unicode,也就是说无法再decode,所以网上那些先decode再encode的方法是没法使用的,这种方法适用的是req.content。
通过查看网站源码,发现网站使用的charset是gbk,Requests 会自动解码来自服务器的内容。大多数 unicode 字符集都能被无缝地解码。请求发出后,Requests 会基于 HTTP 头部对响应的编码作出有根据的推测。当你访问 r.text 之时,Requests 会使用其推测的文本编码。你可以找出 Requests 使用了什么编码,并且能够使用 r.encoding 属性来改变它,我认为requests对编码做出了错误的判断,所以进行了下面的设置:
req.encoding='gbk'
注意,这里的gbk是因为网页使用的是gbk。
然后再对text进行编码
text = req.text
print text.encode('utf-8')
就能正确的打印出中文了
完整的代码如下:
# coding: UTF-8
import requests
if __name__ == '__main__':
target = 'http://www.biqukan.com/1_1094/5403177.html'
req = requests.get(url=target)
req.encoding='gbk'
# content = req.content.decode('gbk').encode('utf-8')
# print content
text = req.text
print(isinstance(text, unicode))
print text.encode('utf-8')
版权声明:本文为qq_36215993原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。