昨天开始看py爬虫的资料,搞了一晚上还是没搞定,最后发现是挑了个最蛋疼的网站导致的,换个url地址早不知看到哪一章了。为了纪念充实的一天,特意来写一篇博客纪念下。
好吧,首先要说明我挑的是NGA网站 http://nga.178.com/
然后是标准的调用requests抓取页面源代码

最简式:

import requests
html=requests.get('http://nga.178.com/')
print html.text

这是requests的标准用法,能抓取一些最简单的英文网页。返回结果是:
UnicodeEncodeError:‘gbk' codec can't encode character u'/xee' in position 485:illegal multibyte sequence.
简单的说,就是页面中有个字符’/xee’无法解码。
好吧翻了不少帖子之后,才知道不同网站的字符编码是不一样的,此处NGA的源码表示他们用的是GBK编码,与Python2.0默认的Unicode不相同。

#coding=utf-8
import requests
html=requests.get('http://www.zhihu.com/')
print html.text

在首行加入声明,调整为utf-8编码格式。此时这个代码已经能抓取部分我们日常使用的网站了,比如知乎。
但是对于NGA,依然是哪个熟悉的
UnicodeEncodeError:‘gbk' codec can't encode character u'/xee' in position 485:illegal multibyte sequence.
此时这个程序依然只能识别utf-8格式的网页,还是不能消化gbk编码的那些网页。
所以,我们需要对其进行重编码

抓+

#coding=utf-8
import requests
html=requests.get('http://www.chiphell.com/')
print html.text.encode('GB18030')

在输出时对输出的字符以GB18030的格式进行重编码,因为GB18030>GBK>GB2312,所以对于所有按照GBK编码的网页,使用GB18030是稳妥的。
这里网上有不少人喜欢用

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

这样的代码,但是参考https://www.v2ex.com/t/163786,这是最不推荐的方式。
用抓++的方式,我们已经可以处理绝大部分的网页,比如我尝试的chihpell,在其源代码中标示编码方式为GBK。
但是回到NGA,我们发现已经能成功的抓取下来代码,但是中文部分不能像chipehll那样正确的显示,而是显示为各种乱码。
于是我在最后的print语句之上加了一句

print html.encoding

来查看NGA的网页到底用的什么编码格式,结果是

ISO-8859-1

传说中的说一套做一套,代码中的’charset=GBK’完全没对上,实际上NGA的页面源代码中是用ISO-8859-1编码格式对中文进行编码的!

抓NGA

#coding=utf-8
import requests
url='http://nga.178.com/'
html=requests.get(url)
#print html.encoding
print html.text.encode('ISO-8859-1')

终于抓出了NGA的代码,不容易啊,看了大概二十来篇文章,填鸭式学习了一堆关于编码方式、中文编码、print输出的内容,最后发现其实有篇文章里讲到过先识别网页编码格式再做输出的内容。

Python爬虫起步:一步步解决中文乱码显示相关推荐

  1. Python 爬虫数据写入csv文件中文乱码解决以及天眼查爬虫数据写入csv

    python爬虫数据写入csv文件中文乱码,用'utf-8'在pycharm中打开文件没有问题,但是用excel打开却出现了问题,以下为解决方法. (最近在练习爬虫,这个博文是对自己学习的记录和分享, ...

  2. python读取中文文件乱码-详解Python的json文件读取及中文乱码显示问题解决方法...

    Python的json文件读取及解决中文乱码显示问题 本文实例讲述了Python实现的json文件读取及中文乱码显示问题解决方法.分享给大家供大家参考,具体如下: city.json文件的内容如下: ...

  3. Python爬虫处理抓取数据中文乱码问题

    乱码原因: 因为你的文件声明为utf-8,并且也应该是用utf-8的编码保存的源文件.但是windows的本地默认编码是cp936,也就是gbk编码,所以在控制台直接打印utf-8的字符串当然是乱码了 ...

  4. python学习笔记分享(四十)网络爬虫(7)反爬虫问题,解决中文乱码,登陆和验证码处理

    网络爬虫深度知识 一.反爬虫问题 (一)反爬虫原因 1.网络爬虫浪费了网站的流量 2.数据是私有资源 3.爬虫协议与原则 (二)反爬虫方式 (三)反反爬虫 1.原理 2.三种方法 二.解决中文乱码 ( ...

  5. 爬虫学习----解决中文乱码

    一.字符编码 在编程的过程中,我们会遇到中文乱码的问题.要解决中文乱码我们就要了解计算机的字符编码,计算机有很多编码方式,因为计算机只能处理数字,因为处理文本的话,就必须先转化为数字.最早的时候计算机 ...

  6. python中解决中文乱码

    解决中文乱码 什么是字符编码 python 的字符编码 encode和decode unicode还可以decode吗? UTF-8还可以encode吗? 解决中文编码问题 问题1:使用request ...

  7. python 保存本地乱码,解决python保存数据到csv文件中文乱码的方法

    解决python保存数据到csv文件中文乱码的方法 发布时间:2020-07-08 13:49:53 来源:亿速云 阅读:695 作者:清晨 小编给大家分享一下解决python保存数据到csv文件中文 ...

  8. python json.loads()中文问题-Python实现的json文件读取及中文乱码显示问题解决方法...

    本文实例讲述了Python实现的json文件读取及中文乱码显示问题解决方法.分享给大家供大家参考,具体如下: city.json文件的内容如下: { "cities": [ { & ...

  9. 如何解决oracle中文乱码问题,oracle中解决中文乱码问题

    中文乱码问题解决 1.查看服务器端编码 select userenv('language') from dual; 查到结果是: USERENV('LANGUAGE') --------------- ...

最新文章

  1. 细节解密:当前最佳的YOLOv4是如何炼成火眼金睛的?
  2. CVPR2020|Facebook PIFuHD:二维图像生成高质量、高细节三维人物
  3. 人工智能都沸腾3年了,现在就业情况还乐观吗?
  4. 邓力、何晓冬深度解读:多模态智能未来的研究热点
  5. 生成JSON数据--官方方法
  6. 笔记-项目管理ITTO-高项/PMP第五版-全
  7. 优化案例(part6)--Feature co-shrinking for co-clustering
  8. 网友半夜差点被沐浴露吓死,众人:原来不止我胆小....
  9. 外文文献怎么找?5个免费图书馆和网站帮你下载90%的外文文献!
  10. 如何将文档转换为一个链接
  11. flex blazeds java spring_flex+blazeds+java+spring后台消息推送
  12. 哈佛大学有没有计算机专业,美国哈佛大学计算机专业课程有哪些?
  13. 《缠中说禅108课》43:有关背驰的补习课
  14. 中国地震断层分布(约495条)
  15. 最小采样频率计算公式_音频文件大小计算公式-好文转载
  16. 2018年全国国家级自然保护区功能区划空间分布
  17. 如何在 R 中计算 Eta 平方
  18. Python函数*args与**kwargs的用法
  19. React.createClass()方法
  20. NTU-RGBD-120数据集

热门文章

  1. undefined reference to `__gxx_personality_sj0'错误解决办法
  2. R语言 数据处理 dplyr包 数据清理
  3. acm-sdut-团战可以输、提莫必须死
  4. 借钱容易要债难?Python新功能,专治借钱不还
  5. WordPress转移服务器
  6. Radmin FAQ
  7. LED的行业术语及详解
  8. PAT 1016 Phone Bills (25分) 逻辑较为复杂 sort() + map
  9. 关闭Mac顽固的开机启动程序
  10. cp2_TrainingSimpleMachineLearningAlgorithmsForClassification_meshgrid_ravel_contourf_OvA_GradientDes