諸如類似的代碼:
……
texts = bs.find_all('div',class='content_element').p.text.strip()
???? print(texts)
……
搜索的內(nèi)容中有中文的情況下饲做,python包BeautifulSoup解碼網(wǎng)頁的時候默認(rèn)應(yīng)該是使用了gbk進(jìn)行編碼
通過此代碼可以看出
……
r=requests.get(link,headers=headers)
Print(r.encoding)
……
可以顯示編碼格式為iso-8859-1
因此我在代碼中定義的headers中沒有說明網(wǎng)頁頭文件中的編碼格式,以下圖片為非標(biāo)準(zhǔn)格式瀏覽器頭部文件
一般標(biāo)準(zhǔn)的頭部文件格式:
? ?
《HTTP權(quán)威指南》里第16章國際化里提到蜘渣,如果HTTP響應(yīng)中Content-Type字段沒有指定charset济蝉,則默認(rèn)頁面是'ISO-8859-1'編碼杰刽。這處理英文頁面當(dāng)然沒有問題菠发,但是中文頁面,就會有亂碼了贺嫂!
前面已經(jīng)說明如何查看當(dāng)前編碼格式的方法滓鸠,下面就說一下遇見此類問題該如何進(jìn)行解決和糾正
首先因為使用的查看IDE中使用的解碼格式是utf-8的,之前網(wǎng)頁中默認(rèn)使用的編碼格式也是utf-8的第喳,所以我們必須將其解碼成utf-8格式的字符才能正常顯示中文
使用之前的代碼進(jìn)行此操作:
texts = bs.find_all('div',class='content_element').p.text.strip().encode(‘iso-8859-1’).decode(‘utf-8’)
???? print(texts)
或者在之前進(jìn)行encoding=‘utf-8’解碼修正
……
r=requests.get(link,headers=headers)
r=encoding=’utf-8’
print(r.encoding)
……
參考網(wǎng)站:
? ?https://www.cnblogs.com/ccsx/p/8572735.html
? ?https://www.cnblogs.com/surecheun/p/9694052.html
? ?https://www.cnblogs.com/bw13/p/6549248.html