Loading

requests 请求网页乱码

一般情况下,每个网页有自己的编码,在使用 requests 请求对应网页时,如果遇到中文编码的问题,大多数情况下直接显式指定 encoding 就可以了,但是今天遇到一个网站,还真是怎么指定都不行:https://www.medchemexpress.cn/

以下所列的参考文档可能能解决编码问题,所以记录下来,但是对于上面这个网站来说并没有完全解决问题:

经过一系列测试,终于是解决了这个问题,并同时抽象出了一种针对编码问题比较简单的通用处理方式,特意记录下:

  1. 利用 apparent_encoding 自动识别网页编码

    相比与显式的指定编码,requests 提供了自动识别网页编码的方式,更加简洁方便,使用时只需要将原来 response.encoding = 'utf-8' 这种模式修改为以下的方式即可:

    import requests
    
    response = requests.get(url, headers)
    response.encoding = response.apparent_encoding
    
  2. 保存网页数据时也同时使用这种方式识别出的编码自动配置编码

    with open('prod.html', 'w', encoding=response.apparent_encoding) as f:
        f.write(response.text)	
    
posted @ 2023-06-27 11:36  sinatJ  阅读(43)  评论(0编辑  收藏  举报