打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
python urllib爬取网页编码问题

利用Python urllib库爬取网页,有时获得的网页打印或写文件遇到编码问题,找了许久终于知道为什么了。

首先利用urlopen()函数获取网页对象,再利用info()函数打印网页的相关信息,确定网页的编码及是否压缩。

[python] view plain copy
  1. import urllib.request  
  2.   
  3. fp = urllib.request.urlopen('http://www.sina.com')  
  4. mybytes = fp.read()  
  5. text = mybytes.decode('utf8')  
  6. print(text)  
报错


显示编码错误,刚开始,傻傻地试各种编码,utf-8,gbk,gb2312,都不行,心里堵得慌,是在玩我吗?

so,开始怀疑是bug,但是有的网页又不会出错,这就奇怪了,最后google找到了一个解释,说是返回的网页数据是压缩格式,恍然大悟,先打印网页信息,看一眼


gzip,网页是压缩后的,所以要先解压,上代码

[python] view plain copy
  1. import urllib.request  
  2. import zlib  
  3.   
  4. fp = urllib.request.urlopen('http://www.sina.com')  
  5. mybytes = fp.read()  
  6. decompressed_data = zlib.decompress(mybytes ,16+zlib.MAX_WBITS)  
  7. text = decompressed_data.decode('utf8')  
  8. print(text)  
  9. 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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python 爬虫介绍 | 菜鸟教程
「爬虫教程」第一章:python爬虫基础教程
python爬虫实践之网页抓取 | IT瘾
python抓取gb2312/gbk编码网页乱码问题
使用python urllib进行网页爬取
Python3网络爬虫(一):利用urllib进行简单的网页抓取
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服