python 3.6 TypeError: write() argument must be str, not bytes解决办法

  • 在学习爬虫时,需要将抓取到的页面数据保存到本地
    def parse(self, response):
        file_name = 'teachers.html'
        with open(file_name, 'w+') as f:
            f.write(response.body)
  • 刚开始使用 'w+'的方式写入,报错
Traceback (most recent call last):
  File "d:\python\lib\site-packages\twisted\internet\defer.py", line 653, in _runCallbacks
    current.result = callback(current.result, *args, **kw)
  File "E:\xampp\htdocs\my_sp\my_sp\spiders\my_sp_one.py", line 13, in parse
    f.write(response.body)
TypeError: write() argument must be str, not bytes
  • 搜索之后发现只需要将写入模式改为 'wb+' 就不会报错了
    注意,Python2.x默认编码环境是ASCII,当和取回的数据编码格式不一致时,可能会造成乱码
    我用的python3,没有这个问题,因为python3默认编码是Unicode
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容