当前位置 博文首页 > python3访问sina首页中文的处理方法

    python3访问sina首页中文的处理方法

    作者:admin 时间:2021-06-27 18:31

    复制代码 代码如下:

    """
    如果只用普通的
    import urllib.request
    html = urllib.request.urlopen("http://www.sina.com").read()
    print(html.decode('gbk'))

    出现下面的错误
    builtins.UnicodeDecodeError: 'gbk' codec can't decode byte 0x8b in position 1: illegal multibyte sequence

    怎么办?原来是有的网站将网页用gzip压缩了 。
    请看下面的代码

    建议大家用python2
    import urllib2
    from StringIO import StringIO
    import gzip

    request = urllib2.Request('http://www.sina.com')
    request.add_header('Accept-encoding', 'gzip')
    response = urllib2.urlopen(request)
    if response.info().get('Content-Encoding') == 'gzip':
        buf = StringIO( response.read())
        f = gzip.GzipFile(fileobj=buf)
        data = f.read()
    print data.decode("GBK").encode('utf-8')
    """

    import io
    import urllib.request as r
    import gzip
    req = r.Request("http://www.sina.com", headers={"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36", "Accept-Encoding": "gzip"})
    bs = r.urlopen(req).read()
    bi = io.BytesIO(bs)
    gf = gzip.GzipFile(fileobj=bi, mode="rb")
    print(gf.read().decode("gbk"))

    js
    下一篇:没有了