requests爬取中文网站的字符编码问题
来源:互联网 发布:哪个网站股票准确数据 编辑:程序博客网 时间:2024/06/06 08:52
这两天在一些门户网站使用requests爬数据的时候,发现打印或者保存到文件中的中文显示为Unicode码,看着十分不爽快,于是就必须网上找了一下相关问题。其实,弄明白了解决也很简单了
比如,爬取凤凰网
response= requests.get("http://www.ifeng.com/")
我们都知道response有text
和content
这两个property,它们都是指响应内容,但是又有区别。我们从doc中可以看到:
text
的doc内容为:
Content of the response, in unicode.
If Response.encoding is None, encoding will be guessed using ``chardet``.
The encoding of the response content is determined based solely on HTTP headers, following RFC 2616 to the letter. If you can take advantage of non-HTTP knowledge to make a better guess at the encoding, you should set ``r.encoding`` appropriately before accessing this property.
而content
的doc内容为:
Content of the response, in bytes.
其中text
是unicode码,content
是字节码,我们获取到的响应内容的字符编码只取决于HTTP headers
,也就是我们查看网页源码时<head>
标签下<meta>
标签中charset
指定的字符编码方式,例如:
<meta http-equiv="content-type" content="text/html;charset=utf-8">
因此,当我们使用text
属性获取html内容出现unicode码时,我们可以通过设置字符编码response.encoding
,来使之匹配网页源码中指定的字符编码,这样打印输出就不会很奇怪了。
import requestsresponse = requests.get("http://www.ifeng.com/")response.encoding = "utf-8" #手动指定字符编码为utf-8print(response.text)
有兴趣的童鞋可以试试没有指定字符编码或者指定其他字符编码的效果。有不懂的欢迎留言讨论!
另外,我们使用python内置的文件操作函数打开文本文件(不是二进制文件,注意区别)时,默认使用的platform dependent
的字符编码进行编解码文本文件,比如Windows中使用的是Ascii,Linux中使用的是utf-8,当然,我们再open()
的时候可以通过encoding
指定字符编码,例如:
open(fileName,"r",encoding="utf-8")
以上就是关于python在爬取中文网页时遇到的一些小问题,记录一下,以便帮助自己和大家。
- requests爬取中文网站的字符编码问题
- python使用requests爬取网页,遇到中文出现乱码的编码问题及解决
- python使用requests爬取网页,遇到中文出现遇到中文出现乱码的编码问题及解决乱码的编码问题及解决
- Python3.x+requests爬取网站遇到中文乱码的解决方案
- BeautifulSoup与requests爬取网页中文转码问题
- 中文字符编码问题
- 网站开发进阶(三十三)中文字符编码问题
- 包含中文字符的URL编码问题
- 包含中文字符的URL编码问题
- 包含中文字符的URL编码问题
- 包含中文字符的URL编码问题
- 使用BeautifulSoup爬取“0daydown”网站的信息(2)——字符编码问题解决
- python requests爬取网页乱码问题
- mysql中文字符编码问题
- Struts2 中文字符编码问题
- python中文字符编码问题
- python使用requests爬网页编码问题
- xml+xsl应用,包含中文字符的URL编码问题
- 如何解决VMware Workstation上ubuntu出现Host SMbus controller not enabled
- PHP用单例模式实现一个数据库类
- vue实战--webpack基本使用二
- 设计模式-抽象工厂模式
- php实现的mongodb操作类
- requests爬取中文网站的字符编码问题
- 了解电商行业--电商行业技术特点(知识拓展)
- java并发编程&线程池原理剖析&锁的深度化完整版本视频教程
- 从PHP5到PHP7自我封装MongoDB以及平滑升级
- python ssh批量登录 自动交互
- Oracle 创建数据库
- [LearnOpenGL]C1:OpenGL简介
- java--Demo3(注册登录)
- 原型链详细分析