python爬虫中文网页cmd打印出错问题解决-阿里云开发者社区

开发者社区> 吞吞吐吐的> 正文

python爬虫中文网页cmd打印出错问题解决

简介:
+关注继续查看

问题描述

用python写爬虫,很多时候我们会先在cmd下先进行尝试。

运行爬虫之后,肯定的,我们想看看爬取的结果。

于是,我们print...

运气好的话,一切顺利。但这样的次数不多,更多地,我们会遇到这样的错误:

UnicodeEncodeError: 'gbk' codec can't encode character

好吧,回去检查网页的编码格式:gb2312

代码中也添加了:r.encoding = 'gb2312'

看不出哪里出了问题,应该没问题的啊!

代码如下:

import requests
from bs4 import BeautifulSoup

url = 'http://bbs.ok226.com/bbs/html/'

r = requests.get(url)
r.encoding = 'gb2312'

soup = BeautifulSoup(r.text, 'html.parser')

# 打印
print(soup.get_text(strip=True))

解决办法:

A.改变控制台编码

网上查,都说是cmd控制台的问题。默认控制台编码gbk

好吧,那就改一下控制台编码,改成gbk的超集gb18030

试试看再说。。。嗯,很好,无报错,但是有乱码,算是解决了问题!

代码如下:

import requests
from bs4 import BeautifulSoup

url = 'http://bbs.ok226.com/bbs/html/'

r = requests.get(url)
r.encoding = 'gb2312'

soup = BeautifulSoup(r.text, 'html.parser')

# 改变控制台编码
import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')

# 打印
print(soup.get_text(strip=True))

B.直接改字符编码

顺着这个思路,再一想,改控制台编码那还不如直接改字符编码:r.encoding = 'gb18030'

试试看再说。哎,没问题了,无报错,无乱码,完美解决!

代码如下:

import requests
from bs4 import BeautifulSoup

url = 'http://bbs.ok226.com/bbs/html/'

r = requests.get(url)
r.encoding = 'gb18030' # 注意网页编码是 gb2312

soup = BeautifulSoup(r.text, 'html.parser')

# 打印
print(soup.get_text(strip=True))

总结

从ASCII、GB2312、GBK到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。

各种编码字符数目

  • gb2312: 7445 -- 在windows中的代码页是CP936
  • gbk: 21886 -- 在windows中的代码页是CP936
  • gb18030: 27484 -- 在windows中的代码页是CP54936
  • gb13000: 等同于unicode

显然,gb18030 是 gb2312,gbk 的超集

因此,解决问题的思路就是:

如果控制台中,打印中文文本出问题,那就用它的编码的超集进行编码


本文转自罗兵博客园博客,原文链接http://www.cnblogs.com/hhh5460/p/5781389.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案
基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案           两个月前做C++课设的时候,电脑编译器编译结果出现了中文乱码,寻求了百度和大神们,都没有解决这个问题,百度上一堆解释是对编译器进行设置之类的,结果没有一个有效果,暑假学习了用Dos来开发Java程序,输入...
1196 0
上传网页后遇到网页乱码问题
上传网页后,打开网站碰到了乱码问题: 把Linux的默认编码调整: 代码如下: #vi    /etc/sysconfig/i18n LANG="zh_CN.
1010 0
MySQL|主从延迟问题排查(一)
大查询长时间执行无法释放DML读锁,后续同步主库的DDL操作获取DML写锁资源被阻塞等待,导致后续同步主库的操作堆积,主从延迟增长严重。从同步延迟的监控来看,延迟从17:11开始,17:51:59进行kill大查询操作,直到17:53建议业务方将大查询kill掉后才结束。
1547 0
MaxCompute客户端(odpscmd)在windows命令行下查询中文乱码问题处理实践
MaxCompute客户端工具是阿里云大数据计算服务MaxCompue产品官方客户端工具,通过客户端工具可以连接MaxCompute项目,完成包括数据管理、数据上下传、作业执行、用户及授权管理等各项操作。
5300 0
爬虫专题分析
爬虫专题已建立一周有余,做为管理员,也不能白占着位置不干活,今天通过爬虫得到的用户信息和收录文章信息,给大家分析下爬虫专题的优势与不足。 用户信息表 创建者 爬虫专题的创建者为向右奔跑,他同时也是@IT·互联网,今日看点的编辑;2015年9月23号入住简书,平均每天更新文章0.28篇;文章内容多为python爬虫和长跑;通过表,可以看出,每个字段信息都是遥遥领先于其他用户,有这个认真负责的创建者坐镇,大家不赶紧关注一波。
561 0
爬虫风险管理常见问题有哪些?
爬虫风险管理常见问题有哪些?
249 0
4008
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载