V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
andmspy
V2EX  ›  Python

刚上高一,家里送了台电脑,自学 PYTHON,遇到转码的问题,请教大家~~

  •  
  •   andmspy · 2016-07-03 20:31:14 +08:00 · 3974 次点击
    这是一个创建于 3094 天前的主题,其中的信息可能已经有所发展或是发生改变。

    代码如下: import requests from bs4 import BeautifulSoup

    url = 'http://www.mnsfz.com/'

    r = requests.get(url) soup = BeautifulSoup(r.text, 'lxml') print(soup.title)

    输出:

    <title>乱码乱码乱码乱码乱码乱码乱码乱码乱码乱码(论坛不能含有特殊字符)</title>

    网页 charset 为‘ utf-8'

    试过 decode('utf-8').encode('gbk') 输出: <built-in method title of str object at 0x03DC14F0>

    请教如何输出纯中文字符 ‘美女私房网,美女图片,美女写真,性感美女,清纯少女,私房照,模特写真,模特私房’ 谢谢。

    22 条回复    2016-07-29 07:46:51 +08:00
    sexoutsex2011
        1
    sexoutsex2011  
       2016-07-03 20:41:26 +08:00
    小伙有出息。
    aheadlead
        2
    aheadlead  
       2016-07-03 20:48:22 +08:00
    (大哥你这个美女私房啥的真是服
    qiaoqinqie
        3
    qiaoqinqie  
       2016-07-03 20:58:43 +08:00
    控制台输出吗 那就设置编码
    在代码前面加
    import sys
    reload(sys)
    sys.setfefaultencoding('utf-8')
    andmspy
        4
    andmspy  
    OP
       2016-07-03 21:02:36 +08:00
    @qiaoqinqie
    python3 也是这样写么?
    要不要修改什么的?
    andmspy
        5
    andmspy  
    OP
       2016-07-03 21:08:38 +08:00
    各位大哥,同学们有需求,我必须满足大家的期待,不过小白一枚,只能挑灯夜读,攻克每个难关。
    cdlnls
        6
    cdlnls  
       2016-07-03 21:15:08 +08:00 via Android
    @qiaoqinqie
    sys.setdefaultencoding('utf-8')
    打错了一个字母
    billlee
        7
    billlee  
       2016-07-03 21:17:46 +08:00
    估计是网页声明的 charset 就有问题,试试这下面几个吧
    soup.title.string.encode('utf-8').decode('gbk')
    soup.title.string.encode('latin-1').decode('gbk')
    soup.title.string.encode('latin-1').decode('utf-8')
    chevalier
        8
    chevalier  
       2016-07-03 21:34:18 +08:00
    r = requests.get(url)
    这个 r 对象,有 encoding 方法,按照网页 charset 试一下
    r.encoding('utf8')
    ioven
        9
    ioven  
       2016-07-03 21:39:02 +08:00
    貌似 requests 自动解码出错,手动解码没问题
    py3 , r.content.decode('utf-8')
    mingyun
        10
    mingyun  
       2016-07-03 22:47:58 +08:00
    r = requests.get(url)
    r.encoding = r.apparent_encoding
    chimingphang
        11
    chimingphang  
       2016-07-03 22:54:11 +08:00
    我知道该同学挑灯夜战,为日后抓种子造福全班男同学努力中
    liangmishi
        12
    liangmishi  
       2016-07-04 02:15:32 +08:00 via Android
    加一句 r.encoding="utf-8"
    就完事了
    aitaii
        13
    aitaii  
       2016-07-04 08:48:21 +08:00
    可以,这很美女私房照。
    playniuniu
        14
    playniuniu  
       2016-07-04 09:11:04 +08:00
    你先看看 r.text 乱码吗
    singer
        15
    singer  
       2016-07-04 12:36:50 +08:00
    import requests from bs4 import BeautifulSoup
    url = 'http://www.mnsfz.com/'
    r = requests.get(url)
    r.encoding = 'utf-8'
    soup = BeautifulSoup(r.text, 'lxml')
    print(soup.title)
    jiangbingo
        16
    jiangbingo  
       2016-07-04 14:34:38 +08:00
    码的问题好解决,阅遍天下XX自然无码。
    andmspy
        17
    andmspy  
    OP
       2016-07-05 19:18:25 +08:00
    谢谢各位大哥的回答,小弟代表全班同学感谢大家。:)
    sqlfeng
        18
    sqlfeng  
       2016-07-06 09:43:18 +08:00
    import sys
    reload(sys)
    sys.setfefaultencoding('utf-8')


    get 之后加
    r.encoding = 'utf-8'
    GreatMartial
        19
    GreatMartial  
       2016-07-06 21:06:59 +08:00
    小伙子,小心到时候同学的家长找到你...
    Owenjia
        20
    Owenjia  
       2016-07-08 23:47:34 +08:00
    不推荐使用 setfefaultencoding ,这里用 BeautifulSoup(res.content) 应该可以正常显示的。


    FYI:
    http://stackoverflow.com/questions/3828723/why-should-we-not-use-sys-setdefaultencodingutf-8-in-a-py-script
    practicer
        21
    practicer  
       2016-07-09 13:27:17 +08:00
    小伙子,有出息
    necomancer
        22
    necomancer  
       2016-07-29 07:46:51 +08:00
    print(soup.title.string.encode('latin-1').decode('utf-8')),编码不对啊
    美女私房照_美女,写真,清纯,少女_私房照|美女私房照_美女写真,少女清纯写真照
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   907 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 22:11 · PVG 06:11 · LAX 14:11 · JFK 17:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.