日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

爬取数据出现乱码的解决方法

發(fā)布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 爬取数据出现乱码的解决方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

爬蟲爬取數(shù)據(jù)出現(xiàn)亂碼的解決方法


1.網(wǎng)站源代碼中英文全部亂碼
可能的解決方法:

1)可能是編碼格式不同造成的 在調(diào)用get方法后,返回的對象中有兩個屬性值,分別為:

encodingapparent_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:`在這里插入代碼片

from urllib import request import chardet import gzip if __name__ == '__main__':url = 'https://jobs.zhaopin.com/CC375882789J00033399409.html'rsp = request.urlopen(url)# 按住Ctrl鍵不送,同時點擊urlopen,可以查看文檔,有函數(shù)的具體參數(shù)和使用方法html = rsp.read()cs = chardet.detect(html)print(html)print("cs的類型:{0}".format(type(cs)))print("監(jiān)測到的cs數(shù)據(jù):{0}".format(cs))html = html.decode("utf-8")# 意思是監(jiān)測到就使用監(jiān)測到的,監(jiān)測不到就使用utf-8print("HTML頁面為:\n%s" % html)

`

總結(jié)

以上是生活随笔為你收集整理的爬取数据出现乱码的解决方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。