python urllib爬取网页编码问题
2016-04-28 17:17
309 查看
利用python urllib库爬取网页,有时获得的网页打印或写文件遇到编码问题,找了许久终于知道为什么了。
首先利用urlopen()函数获取网页对象,再利用info()函数打印网页的相关信息,确定网页的编码及是否压缩。
显示编码错误,刚开始,傻傻地试各种编码,utf-8,gbk,gb2312,都不行,心里堵得慌,是在玩我吗?
so,开始怀疑是bug,但是有的网页又不会出错,这就奇怪了,最后google找到了一个解释,说是返回的网页数据是压缩格式,恍然大悟,先打印网页信息,看一眼
gzip,网页是压缩后的,所以要先解压,上代码
import urllib.request
import zlib
fp = urllib.request.urlopen('http://www.sina.com')
mybytes = fp.read()
decompressed_data = zlib.decompress(mybytes ,16+zlib.MAX_WBITS)
text = decompressed_data.decode('utf8')
print(text)
print(fp.info())结果
Google问题原版
http://stackoverflow.com/questions/3746993/change-python-byte-type-to-string
http://stackoverflow.com/questions/3703276/how-to-tell-if-a-file-is-gzip-compressed/3703300#3703300
首先利用urlopen()函数获取网页对象,再利用info()函数打印网页的相关信息,确定网页的编码及是否压缩。
import urllib.request fp = urllib.request.urlopen('http://www.sina.com') mybytes = fp.read() text = mybytes.decode('utf8') print(text)报错
显示编码错误,刚开始,傻傻地试各种编码,utf-8,gbk,gb2312,都不行,心里堵得慌,是在玩我吗?
so,开始怀疑是bug,但是有的网页又不会出错,这就奇怪了,最后google找到了一个解释,说是返回的网页数据是压缩格式,恍然大悟,先打印网页信息,看一眼
gzip,网页是压缩后的,所以要先解压,上代码
import urllib.request
import zlib
fp = urllib.request.urlopen('http://www.sina.com')
mybytes = fp.read()
decompressed_data = zlib.decompress(mybytes ,16+zlib.MAX_WBITS)
text = decompressed_data.decode('utf8')
print(text)
print(fp.info())结果
Google问题原版
http://stackoverflow.com/questions/3746993/change-python-byte-type-to-string
http://stackoverflow.com/questions/3703276/how-to-tell-if-a-file-is-gzip-compressed/3703300#3703300
相关文章推荐
- python urllib爬取网页编码问题
- python urllib爬取网页编码问题
- python urllib爬取网页编码问题
- python urllib爬取网页编码问题
- python urllib爬取网页编码问题
- python urllib爬取网页编码问题
- python urllib爬取网页编码问题
- python装饰器
- Python3学习(二)-递归函数、高级特性、切片
- selenium+webdriver+python定位不到元素的原因及解决办法
- 0045 Ubuntu常用指令(与mysql,python,hadoop,spark,java ,g++,编辑器等相关)
- [LeetCode]题解(python):141-Linked List Cycle
- python log
- 如何远程调试Python代码
- 如何远程调试Python代码 推荐
- [LeetCode]题解(python):140-Word Break II
- Python 迭代器与生成器
- Python MySQL 数据库连接
- iPython的安装与简单使用
- python之高阶函数编程