Learn Beautiful Soup(6) —— BeautifulSoup中對於編碼的支持

全部的網頁都有一個本身的編碼。UTF-8是目前網站的標準編碼。因此,當爬取這些網頁時,爬蟲程序必需要能理解這些網頁的編碼。不然,頗有可能你在網頁上看到的是正確的字符,而爬取得到的結果倒是亂碼。而BeautifulSoup則能熟練的處理這些編碼。html

BeautifulSoup中的編碼python

通常在一個網頁中,能夠從charset這個屬性中看到網頁的編碼:網站

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">

BeautifulSoup使用UnicodeDammit庫來自動地檢測文檔的編碼。BeautifulSoup建立soup對象時會自動地將內容轉換爲Unicode編碼。ui

瞭解HTML文檔的原始編碼,soup.original_encoding會告訴咱們文檔的原始編碼是什麼。編碼

指定HTML文檔的編碼,UnicodeDammit庫會搜索整個文檔而後來檢測文檔採起何種編碼,這樣一來浪費時間並且UnicodeDammit也有可能檢測錯誤。若是知道文檔編碼是什麼,那麼能夠在最初建立BeautifulSoup對象的時候就用from_encoding來指定文檔的編碼。code

soup = BeautifulSoup(html_markup,"lxml",from_encoding="utf-8")

編碼輸出

BeautifulSoup中也有輸出文本的方法。好比prettify(),將只會以UTF-8的編碼方式輸出。即便文檔是其餘類型的編碼也照樣UTF-8編碼輸出。xml

可是prettify()也能夠指定其餘編碼格式輸出:htm

print(soup.prettify("ISO8859-2")
咱們一樣能夠用encode()來編碼輸出。encode()默認也是以UTF8編碼。不過它一樣能夠指定編碼方式輸出。
相關文章
相關標籤/搜索