Home  >  Q&A  >  body text

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来处理了
求教

PHP中文网PHP中文网2741 days ago376

reply all(2)I'll reply

  • PHPz

    PHPz2017-04-17 17:36:23

    Personally, it is recommended that when obtaining the response, the string should be parsed according to the encoding format specified in the 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)
                

    Output

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

    reply
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:36:23

    Hello! I've also encountered similar problems.
    The solution is to change print(s) to print(s.encode('latin1').decode('utf-8'))
    This is the running result:

    Good Luck!

    reply
    0
  • Cancelreply