python關於亂碼的問題總結(例子 人民網)

2021-09-25 01:36:49 字數 1064 閱讀 9728

url = ""

response = requests.get(url,headers = header) #此處header並未具體寫出

print(response.text)

header中的引數錯誤,**輸出後的產生亂碼

accept-encoding: gzip, deflate
解決方法:

出現了問題,網上的解決辦法是把請求頭header中的這行**注釋掉

出現原因:

瀏覽器對於從伺服器中返回的對應的gzip壓縮的網頁,會自動解壓縮,所以,其request的時候,新增對應的頭,表明自己接受壓縮後的資料。而此**中,如果也新增此頭資訊,結果就是,返回的壓縮後的資料,沒有解碼,而將壓縮後的資料當做普通的html文本來處理,當前顯示出來的內容,是亂碼了。

出現亂碼的原因:

當源網頁編碼和爬取下來後的編碼轉換不一致時,如源網頁為gbk編碼的位元組流,而我們抓取下後程式直接使用utf-8進行編碼並輸出到儲存檔案中,這必然會引起亂碼。

即當源網頁編碼和抓取下來後程式直接使用處理編碼一致時,則不會出現亂碼,此時再進行統一的字元編碼也就不會出現亂碼了。

最終爬取的所有網頁無論何種編碼格式,都轉化為utf-8格式進行儲存。

解決方法:

1.先觀察網頁內容屬於什麼碼:

print(response.encoding)
2.將內容轉碼:

#-*-coding:utf-8-*-

import requests

from bs4 import beautifulsoup

header =

url = ""

content = requests.get(url,headers = header)

demo = content.text.encode("iso-8859-1").decode("gbk")

soup = beautifulsoup(demo,"html.parser")

print(soup)

總結python中的亂碼問題

首先要知道,字串在python內部的表示是unicode編碼 萬國碼 因此,在做編碼轉換時,通常需要以unicode作為中間編碼,即先將其他編碼的字串解碼 decode 成unicode,再從unicode編碼 encode 成另一種編碼。python編碼有兩種資料模型來支援字串型別 一種是str ...

關於亂碼的問題

size medium 時常會發現在頁面顯示亂碼的問題,如果是從表的取出中文,則需要在呼叫request的獲取引數的方法之前呼叫request.setcharacterencoding gbk 如果要在頁面上顯示,需要在獲取相應的輸出流之前既response.getwriter 之前 呼叫respo...

關於亂碼的問題

我之前的認知一直是亂碼的原因是編碼和解碼的方式沒有對應,所謂三碼合一的問題,存在計算機底層的資料都是二進位制的形式,但是今天在看廖雪峰的教程時寫道 搞清楚了ascii unicode和utf 8的關係,我們就可以總結一下現在計算機系統通用的字元編碼工作方式 在計算機記憶體中,統一使用unicode編...