解决 Python3 使用 requests 解析网页,中文变成 &#x 开头的字符

今天用 Python(v3.7.0)解析某个网页时(UTF8 编码),中文字符变成了很多以 &#x 开头的乱码字符串,具体的形式是 &#x + 一个十六进制的数字,直接用 print 输出出来也不会变成中文,而是直接输出。一开始老王以为是 UTF8 编码,后来发现是 HTML 的转义序列,这里分享下解决方法。

一、基础知识

在网页源码中,常见以 &#x 开头,后面接十六进制数字,或者以 &# 开头,后面接十进制数字,这些字符串其实不是编码,而是HTML、XML 等 SGML 类语言的转义序列(escape sequence)

更多的可以参考知乎:

&#x开头的是什么编码呢。浏览器可以解释它。如中国等同与中文”中国”? – 梁海的回答 – 知乎 https://www.zhihu.com/question/21390312/answer/18091465

二、解决方法

我用的是 Python3,直接用 html 自带的一个方法就搞定了:

html.unescape(title)

如果你是低版本的 Python,那么分享一个网上的别人的方法:

from HTMLParser import HTMLParser
print HTMLParser().unescape('中国')
赞(1)
关注我们
未经允许不得转载:老王博客 » 解决 Python3 使用 requests 解析网页,中文变成 &#x 开头的字符

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址