记一个遇到的requests库编码的小问题

今天刚开始看MOOC的爬虫课程,在开头看见老师给的通用爬虫框架有这么一句
r=requests.get(url)
r.encoding=r.apparent_enconding
return r.text

这里其实是存在2个问题的:

  1. requests库的content与text
    这个是开课8老师提过的
    content返回类型是str
    text返回类型是Unicode,所以需要指定一下编码形式,不然容易显示乱码
    还说了啥忘记了,反正他的结论是建议用content.decode()
    关于这个decode,MAC系统默认是utf-8,Windows默认gbk,所以Windows有时需要根据网页的编码指定encoding=“utf-8”
  2. 将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 ​​​​

你可能感兴趣的:(记一个遇到的requests库编码的小问题)