今天刚开始看MOOC的爬虫课程,在开头看见老师给的通用爬虫框架有这么一句
r=requests.get(url)
r.encoding=r.apparent_enconding
return r.text
这里其实是存在2个问题的:
- requests库的content与text
这个是开课8老师提过的
content返回类型是str
text返回类型是Unicode,所以需要指定一下编码形式,不然容易显示乱码
还说了啥忘记了,反正他的结论是建议用content.decode()
关于这个decode,MAC系统默认是utf-8,Windows默认gbk,所以Windows有时需要根据网页的编码指定encoding=“utf-8” - 将r的内容用with open保存到txt文件时的编码问题
用with open保存到txt文件时,光在content里面decode了还不一定ok,我Windows系统遇到了一个这样的问题:
UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\xbb’ in position 30633: illegal multibyte sequence
或者UnicodeEncodeError: ‘gbk’ codec can’t encode character '\xa0’错误
查询之后的解决办法:
(1)在with open里加encoding=‘utf-8’,
(2)content不加decode然后保存的时候直接保存二进制字节wb
本文探讨了使用Python的requests库进行网页抓取时遇到的编码问题。重点分析了content与text属性的区别,以及如何正确处理不同操作系统的默认编码,避免乱码出现。同时,文章还提供了保存文件时的编码解决方案。
6559





