导航:首页 > 编程语言 > python打印网页乱码

python打印网页乱码

发布时间:2024-04-14 05:58:40

python IDLE 控制台输出乱码问题怎样解决

在源代码开激拆始处加上如下这句:

# -*- coding: GBK -*-

...... 其他 Python 源代码 ......

然后,选择 IDLE 的菜单 Options ->
Configure IDLE... 打开 IDLE 的配置选项,切换到 General 选项卡,找到 Default Source
Encoding 设置项,选中 Locale-defined 选项,点击 Apply 按钮,再点击 OK 以便保存设置。

关闭退出 IDLE 并重写郑尺打开 IDLE 集成明丛枣开发环境,此时你再试一下:

② 璇锋暀鍏充簬python杈揿嚭涓鏂囦贡镰佺殑闂棰

浜哄剁绣椤甸噷锻婅瘔浣犱简

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

浣犲湪windows涓嬮粯璁ょ殑鏄疓BK锛屽綋铹秛tf-8镄勪腑鏂囨槸涔辩爜浜

print html3.decode('utf-8').encode('gbk')

浣犲啀璇曡瘯

③ 用python抓取的网页保存后为什么乱码

从你给的代码来是Python2。我下面给一个基于Python3的代码,可以参考一下:

romurllib.requestimporturlopen;
fromurllib.parseimportquote;
rawtext=urlopen('http://www.ccnu.e.cn',timeout=15).read();
print(rawtext)
rawtext=rawtext.decode('gbk')
print(rawtext)
f=open('ccnu.txt','w',encoding='utf8');
f.write(rawtext)

大概的原理是,在Python3下面,抓取到的页面默认是byte类型的(通过第4行输出的结果就可以看出来),我们需要根据网页的实际编码进行处理。本例中给的网页使用的是gb2312。所以,我要先以gbk的格式进行解码(gbk包含了gb2312,能够表示更多的汉语字符),解码后实际上得到的就是unicode码了,由于我的控制台编码设置的是utf8,在打印时系统会自动将字符串从unicode转为utf8,所以第6行控制台打印结果正常;第7行写入文件时也要指定文件的编码格式,我这里选择的是utf8,当然用gbk也是一切正常的,因为这个编码设置的是保存文件的编码,而不是原来那个网页内容的编码了。字符串编码和文件编码不是一回事。打开ccnu.txt发现无乱码。

Python2的代码我不熟。

建议你也在代码中添加print 看控制输出是否正常。如果控制台输出正常,则有可能是在保存页面文件时,没有正确指定内容字符串的encode格式。或者把所有gb2312换为gbk再试试。

反正Python2下面极容易出现汉字乱码,如果能理解编码encode和解码decode的含义,了解Python2的字符串处理过程,就可以避免这些问题。

④ Python+requests 爬取网站遇到中文乱码怎么办

1. 遇到的中文乱码问题
1.1 简单的开始
使用requests来拔取网站内容十分方便,一个最简单的代码段只需要2-3行代码就行。

点击(此处)折叠或打开

⑤ python3,pycharm,写爬虫时遇到打印的结果乱码,希望得到大神的帮助,谢谢啦

这个问题主要是编码问题,一般需要检查系统设置、ide设置、python代码里的编码,一致改成utf8一般就没问题。
windows中文默认是gbk,ide就要相应改成gbk才能显示完整

⑥ python编程中中文输出乱码UnicodeEncodeError: 'ascii' codec can't encode character

楼主你好!

其实按照你的代码的逻辑来做是没有错的,无法显示成utf-8编码的文本其实是因为在request请求的时候,按照网页的标识转了码,接着BeautifulSoup把已经是utf-8的文本又强转了一次utf-8编码,导致了无法正确的显示,以想要拿到的时间为例,其实程序的目标字符串应该如下:

#-*-coding:utf-8-*-

'''我们想要使用的字符串'''
target_str=':53'

'''两次转码后的字符串'''
get_str=u':53'


归根结底是两个对象的类不同,但python不支持这两种类型的强转,个人想了个比较临时的解决方案,算是个python打了个补丁,就是将字符串转成二进制,再转回字符串,这样就unicode就不用给他加上编码方式再转成二进制字符串了,修改后的代码如下:

#-*-coding:utf-8-*-
importrequests
frombs4importBeautifulSoup
fromdatetimeimportdatetime

defencode(s):
'''将字符串转成二进制'''
return''.join([bin(ord(c)).replace('0b','')forcins])

defdecode(s):
'''将二进制转换成字符串'''
return''.join([chr(i)foriin[int(b,2)forbins.split('')]])

res=requests.get('
)
res.encodeing='utf-8'

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

'''每个中文字符都进行转换处理'''
title=decode(encode(soup.select('#artibodyTitle')[0].text))
time=decode(encode(soup.select('.time-source')[0].contents[0].strip()))

chinese='%Y年%m月%d日%H:%M'
timesource=datetime.strptime(time,chinese)
print(title)
print(timesource)

看楼主在研究的过程中,对字符串的编码原理的理解还有所欠缺,这方面的资料在网上很多,可以再自行研究一下,能够获得长足的进步。

望采纳,谢谢!

⑦ python命令行输入中文乱码怎么办

python2.X,代码中指定了UTF-8,但是在cmd命令行窗口时,打印的中文仍然会乱码。

在python3不存在该问题

运行结果:

原因

中文windows默认的输出编码为gbk ,与脚本中定义的UTF-8不一样,所以出现了解码失败的情况。

相关推荐:《Python基础教程》

解决方法

有如下两种方法可以解决这个问题

方法一

我们可以通过先把中文解码为unicode,然后再转化为gbk来解决这个问题:

修改后运行结果:

方法二

当然,我们也可以通过改变cmd命令行窗口的输出格式来解决这个问题:

·chcp 65001 就是换成UTF-8代码页

·chcp 936 可以换回默认的GBK

但是这样就降低了脚本的兼容性,在其他环境运行的时候可能还会出现这样的错误,而且可能会影响其他脚本运行,所以推荐使用第一种方法。

⑧ python2.7打印中文乱码怎么办

由于python默认以ASCII编码,所以不支持中文。所以我们需要在代码前面写上“#_*_ coding:utf-8 _*_”或者#coding=utf-8.当然,如
果你代码中没有中文,就不需要加上了。
还有一个原因,由于python所运行的操作系统决定的,windows默认的编码方式是GBK编码,所以这也是一个导致中文乱码的原因之
一。
建议是不管你用什么,先在代码前面加上这一串,一定不会出现问题。
推荐学习《Python教程》。

⑨ python 中文乱码问题

记事本是用utf-8保存你下载了东西的。你下载下来的不是utf-8,保存下来中文当然就乱码了。而gbk和utf-8里英文的编码值都一样,所以不受影响。

一个方法是你留意下目标页面的charset 和 contentType,另一个方法是你复制一个目标页面的字,放cmd里看它的编码长度,以此来判断它的原来编码。

阅读全文

与python打印网页乱码相关的资料

热点内容
代码混淆器php 浏览:363
贝恩pdf 浏览:205
丙烯pdf 浏览:364
云服务器华硕 浏览:711
sublime3运行python 浏览:186
怎么把安卓视频传到苹果上面 浏览:81
手机拍鬼片用什么app 浏览:640
爬山虎app是干什么用的 浏览:505
有哪些写给程序员的歌 浏览:49
成都市命令 浏览:993
建立系列文件夹 浏览:983
苹果开机白屏带文件夹问号 浏览:733
体验服为什么服务器会关闭 浏览:41
酒店命令 浏览:750
中走丝线切割编程视频 浏览:80
衣服压缩袋手泵原理 浏览:714
通达信编程书籍 浏览:981
车用压缩天然气瓶阀 浏览:971
鞋的程序员 浏览:259
车的压缩比是什么意思 浏览:202