python爬虫编码问题 怎么都改不好 5C

第一天学习爬虫就遇到了这个问题,在网上找了很多解决办法都解决不了,希望有人能帮忙解决一下,感谢!图片说明图片说明图片说明

6个回答

这明显是编码问题:你这样写 print html.decode('utf-8)

Moluth
Moluth 回复原汁原味8023: 我在下面的回复中给你再补充一些吧。
一年多之前 回复
u014227470
原汁原味8023 回复Moluth: 还是不行啊,图片在我自己的评论里面
一年多之前 回复
Moluth
Moluth 上面代码少个单引号,有些网页用的是gbk编码,可以把utf-8 换成gbk
一年多之前 回复

还是不行,图片说明图片说明

可以网上找找第三方的自动检测编码的库。或者把网页在浏览器打开,查查是什么编码。

encode('utf-8')

我自己写了一个,Python3.5的代码:

 #coding=utf-8
#网页爬虫
from urllib import parse,request
header_dict = {
    "Accept":"application/json, text/javascript, */*; q=0.01",
    "Accept-Language":"zh-CN,zh;q=0.9",
    "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36",
                }


def get_http(load_url,has_header):
    res=""
    try:
        req=None
        if has_header:
            req = request.Request(url=load_url,headers=header_dict)
        else :
            req = request.Request(url=load_url)
        resu = request.urlopen(req)
        resu = resu.read()
        #print(res)
        #输出内容(python3默认获取到的是16进制'bytes'类型数据 Unicode编码,如果如需可读输出则需decode解码成对应编码):b'\xe7\x99\xbb\xe5\xbd\x95\xe6\x88\x90\xe5\x8a\x9f'
        #print(res.decode(encoding='utf-8'))
        res=resu.decode(encoding='utf-8')
    except Exception as e:
        print(e)
    return res

res=get_http("http://www.baidu.com",True)
print(res)


#############################
#下面是部分输出:
var get = function(url) {
        if(location.protocol === "http") {
            return url;
        }
        var reg = /^(http[s]?:\/\/)?([^\/]+)(.*)/,
        matches = url.match(reg);
        /* 判断传入参数是域名还是地址,分别做处理 */
        url = list.hasOwnProperty(matches[2])&&(list[matches[2]] + matches[3]) || url;
        return url;
    },
    set = function(kdomain,vdomain) {
        list[kdomain] = vdomain;
    };
    return {
        get : get,
        set : set
    }
})();
</script>
<script>
//让用户更快看到首页
if(!location.hash.match(/[^a-zA-Z0-9]wd=/)){
    document.getElementById("wrapper").style.display='block';
    setTimeout(function(){
        try{



编码检查问题:
1.使用pip安装chardet
python2.X:
pip install chardet

python3.X
pip3 install chardet

使用chadet判断
import chardet

chardet.detect(byte_str)
注意:参数是byte类型的数据,chardet是用来判断网页编码的。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!