大家好,我是才哥。
这篇是我们答疑解惑的第2篇,不过这并不是粉丝的问题,而是才哥在爬虫时候遇到的情况,今天就记录一下。
目录:
咱们就不讲背后的逻辑了为什么utf-8中文乱码,直接上才艺!
import requests
url = "http://www.baidu.com"
r = requests.get(url)
我们发现请求到的网页数据打印结果如下:
中文乱码
中文乱码了,处理方案如下:
# 自动选择合适的编码方式
r.encoding = r.apparent_encoding
正常了
中文乱码显示正常了!!
有时候,我们还会遇到通过这个操作后无法解决的情况为什么utf-8中文乱码,比如新浪首页的表现:
import requests
url = "http://www.sina.com.cn/"
r = requests.get(url)
r.encoding = r.apparent_encoding
新浪乱码
出现这种情况,据说是使用gzip将网页压缩了,必须先对其解码,使用r.会自动解码:
import requests
url = "http://www.sina.com.cn/"
r = requests.get(url)
# 指定编码解码方式
html = r.content.decode('UTF-8')
# r.encoding = 'utf-8'
解码后
其实吧,处理的方式有很多,大家注意一点,那就是看请求的html数据中最前面对的设置的是啥!!
2. html实体编码解析
在有些时候,我们请求到的网页数据中有很多html实体编码。
比如,我在爬取游戏评论的时候请求到的某条评论数据如下:
'目前玩的挺好的,就……
给四星是因为为什么不是同一个服的就不能进社团'
可以看到,有个'&;',这玩意是html实体表示省略号'...',因此需要进行处理!
部分html实体
如何处理呢?看招!!
In [1]: s = '目前玩的挺好的,就……
给四星是因为为什么不是同一个服的就不能进社团'
In [2]: import html
In [3]: html.unescape(s)
Out[3]: '目前玩的挺好的,就……
给四星是因为为什么不是同一个服的就不能进社团'
对于字符串中的
,其实就是换行符,我们直接替换为n即可。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。