爬取数据出现乱码的解决方法
爬蟲爬取數(shù)據(jù)出現(xiàn)亂碼的解決方法
1.網(wǎng)站源代碼中英文全部亂碼
可能的解決方法:
1)可能是編碼格式不同造成的 在調(diào)用get方法后,返回的對象中有兩個屬性值,分別為:
encoding、apparent_encoding,當二者不同時,可能出現(xiàn)亂碼,解決辦法是encoding的值優(yōu)先于apparent_encoding,即令:encoding=apparent_encoding
2)可能是反爬策略調(diào)用get方法中的header參數(shù)設(shè)置問題,比如加入了反爬頭部關(guān)鍵字:Accept-Encoding: gzip, deflate, br,則可能出現(xiàn)全局亂碼,只需刪除這一關(guān)鍵字即可。
具體原因可能是服務(wù)器端在響應(yīng)請求數(shù)據(jù)時采用了相應(yīng)的編碼格式(比如:gzip、br)將數(shù)據(jù)進行壓縮后再進行發(fā)送,然后瀏覽器端我們調(diào)用的requests方法時會自動幫助我們解壓(gzip壓縮的等)網(wǎng)頁內(nèi)容,如果這時候我們在params強行加入header頭部參數(shù)模擬瀏覽器時,可能會導致解壓數(shù)據(jù)時格式不正確,得到的數(shù)據(jù)出現(xiàn)亂碼
2.出現(xiàn)類似b/x204/ds234/4353類似的亂碼文件
可能是由于網(wǎng)站本身數(shù)據(jù)被壓縮為gzip格式的文件,解決方式是在python中引入gzip庫,并通過調(diào)用decompress(待解壓對象).encode(‘utf-8’)將原始數(shù)據(jù)進行解壓后再進行使用
3.只出現(xiàn)中文亂碼
可能是編碼格式不匹配導致
解決方法1:進入網(wǎng)站界面,查看html源代碼,找到head頭部中的charset屬性,并將其值復制下來,eg:
然后再將該值賦值給r.encoding,即r為調(diào)用requests中的get 方法返回的對象,比如:r.encoding =‘gb2312’
解決方法2:直接令r.encoding = r.apparent_encoding
ps:
charset 查看網(wǎng)頁中的源代碼的編碼格式
使用方法:引入import chardet
調(diào)用chardet.detect(html)
eg:`在這里插入代碼片
`
總結(jié)
以上是生活随笔為你收集整理的爬取数据出现乱码的解决方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在线教育:直播授课在这三个阶段有哪些要看
- 下一篇: API-String类、基本数据类型对象