Ⅰ python爬虫抓取到的数据用网页打开时是乱码,怎么解决
写爬虫是经常会遇到这样的问题,这种问题很显然是编码问题,解决的方法其实也不难。
你可以用下面的两个方法来解决你的编码问题:
第一种是,通过浏览器打开你写的html之后,找到浏览器中的文字编码修改,将编码改为Unicode编码,即可修复。
第二种方法是修改你的前端代码:在你的代码output_html方法中,规定网页的文字编码即可
Ⅱ PYTHON获取网页源码乱码,怎么办
text 是系统自行解码,部分网页会不对。
content指定解码,你的网页是utf-8的,对应解码就可以了
Ⅲ 用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 抓取的网页链接,链接中的中文乱码问题
应该是shell的编码和listinfo编码不一样导致的,部分正常,部分乱码有可能是因为两种编码部分字符恰好一样。
试试
importsys
printi[i].encode(sys.getdefaultencoding())
Ⅳ python爬虫出现菱形问号乱码的解决方法
在windows下使用非idle的其他ide编辑器,会碰到这个问题。对抓取到的网页内容进行先解码再编码即可。
以requests为例:
r = r.content.decode('gbk').encode('utf-8')
出现编码问题时,
1.仔细分析错误的类型。
看是decode(解码)错误还是encode(转码)错误。
2.搞清自己处理的字符串是什么类型的。
一般看网页的charset,一般为gbk,gb2312或gb18030.其中包含字符的大小为gb2312 < gbk <gb18030。一般出现‘gbk’ codec can’t decode,是因为
(1)要处理的字符串本身不是gbk编码,但是你却以gbk编码去解码
比如,字符串本身是utf-8的,但是你却用gbk去解码utf-8的字符串,所以结果不用说,则必然出错。
(2)处理的字符的确是gbk的,但是其中夹杂的部分特殊字符,是gbk编码中所没有的
如果有些特殊字符是GB18030中有的,但是是gbk中没有的。
则用gbk去解码,去所不支持的字符,也比如会出错。
所以,此种情况,可以尝试用和当前编码(gbk)所兼容的但所包含字符更多的编码(gb18030)去解码,或许就可以了。
3.然后换用这种的字符编码去编码或解码。
详情链接:https://www.crifan.com/summary_python_unicodedecode_error_possible_reasons_and_solutions/