首页 > python3 中文乱码

python3 中文乱码

from bs4 import BeautifulSoup
from bs4 import UnicodeDammit
import requests

def run():
    soup = requests.get('http://zy.upln.cn/gongshi2014/index.html').text
    soup = BeautifulSoup(soup,'html.parser')
    soup = soup.find('tbody')
    for x in soup.find_all('tr'):
        for y in x.find_all('td'):
            s = y.a.text
            print(s)

if __name__=="__main__":
    run()

读取之后的内容不知道是不是gbk被当成UTF-8来处理了
求教


你好!我也遇到过类似问题。
解决办法 print(s) 改为 print(s.encode('latin1').decode('utf-8'))即可
这是运行结果:

Good Luck!


个人建议获取response时,按照response里指定的编码格式把字符串解析了

def run():
    r = requests.get('http://zy.upln.cn/gongshi2014/index.html')
    soup = r.text.encode(r.encoding) #这里获取的text先按照指定的字符集解析下,这样gbk、utf8都可以了
    soup = BeautifulSoup(soup, 'html.parser')
    soup = soup.find('tbody')
    for x in soup.find_all('tr'):
        for y in x.find_all('td'):
            s = y.a.text
            print(s)
            

输出

辽宁大学
大连理工大学
沈阳工业大学
沈阳航空航天大学
沈阳理工大学
东北大学
辽宁科技大学
辽宁工程技术大学
辽宁石油化工大学
沈阳化工大学
大连交通大学
大连海事大学
大连工业大学
沈阳建筑大学
辽宁工业大学
沈阳农业大学
大连海洋大学
中国医科大学
辽宁医学院
大连医科大学
辽宁中医药大学
沈阳药科大学
辽宁师范大学
沈阳师范大学
渤海大学
鞍山师范学院
大连外国语大学
东北财经大学
沈阳体育学院
沈阳音乐学院
鲁迅美术学院
辽宁对外经贸学院
沈阳大学
大连大学
辽宁科技学院
沈阳工程学院
辽东学院
大连民族学院
大连理工大学城市学院
沈阳工学院
大连工业大学艺术与信息工程学院
大连科技学院
沈阳城市建设学院
大连医科大学中山学院
辽宁医学院医疗学院
辽宁师范大学海华学院
辽宁理工学院
大连财经学院
沈阳城市学院
大连艺术学院
辽宁何氏医学院
沈阳化工大学科亚学院
大连东软信息学院
辽宁财贸学院
【热门文章】
【热门文章】