requests 获取中国统计信息网,内容中文乱码

问题代码

#!usr/bin/python3
# -*- coding: utf-8 -*-
def getData():
   url ="http://www.tjcn.org/tjgb/23sc/35900.html"
   headers = {
            ...
    }
    r = requests.get(url, headers=headers)  
    etree = html.etree
    r.encoding = 'utf-8'
    filename = './data/**.txt'
    with open(filename, 'w', encoding='utf-8') as f:  
    f.write(r.text)

错误结果

requests 获取中国统计信息网,内容中文乱码

修正代码

#!usr/bin/python3
# -*- coding: utf-8 -*-
def getData():
   url ="http://www.tjcn.org/tjgb/23sc/35900.html"
   headers = {
            ...
    }
    r = requests.get(url, headers=headers)  
    etree = html.etree
    r.encoding = 'gb2312'
    filename = './data/**.txt'
    with open(filename, 'w', encoding='utf-8') as f:  
    f.write(r.text)

输出正确 主要是编码方式不同造成的

summer0422
summer0422
最佳答案

已解决:问题产生原因是因为我用r.encoding = 'utf-8',网页返回值是r.encoding = 'gb2312'

4年前 评论
娃哈哈店长 4年前
summer0422 (作者) (楼主) 4年前
讨论数量: 4
summer0422

已解决:问题产生原因是因为我用r.encoding = 'utf-8',网页返回值是r.encoding = 'gb2312'

4年前 评论
娃哈哈店长 4年前
summer0422 (作者) (楼主) 4年前

排版帮助不了别人

4年前 评论

比如夏侯惇的惇在gb2312会识别不了,所以可以用gbk

4年前 评论

html.encoding = html.apparent_encoding

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!