python獲取頁面亂碼時的處理

doublefacekill發表於2021-11-11

用requests模組獲取網站資料時,網站的編碼是個很麻煩的問題。一般情況下,requests會自動識別網站的編碼,如果網頁沒有指定編碼,那就會預設為是ISO-8859-1編碼。這個時候可能就會出問題。

一般有幾種方式,最簡單的就是,人為的指定編碼 r.encoding = ‘utf-8’

但是採集資料時,可能訪問不同域名的網站,這時候就不好為每一個網站都人為的指定一個正確的編碼。以下是通用方法

        if r.encoding == 'ISO-8859-1':
            encodings = requests.utils.get_encodings_from_content(r.text)
            if encodings:
                encoding = encodings[0]
            else:
                encoding = r.apparent_encoding
            return r.content.decode(encoding, 'replace')
        else:
            return r.text
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章