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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

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

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


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

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

encodingapparent_encoding,當(dāng)二者不同時(shí),可能出現(xiàn)亂碼,解決辦法是encoding的值優(yōu)先于apparent_encoding,即令:encoding=apparent_encoding

2)可能是反爬策略調(diào)用get方法中的header參數(shù)設(shè)置問(wèn)題,比如加入了反爬頭部關(guān)鍵字:Accept-Encoding: gzip, deflate, br,則可能出現(xiàn)全局亂碼,只需刪除這一關(guān)鍵字即可。

具體原因可能是服務(wù)器端在響應(yīng)請(qǐng)求數(shù)據(jù)時(shí)采用了相應(yīng)的編碼格式(比如:gzip、br)將數(shù)據(jù)進(jìn)行壓縮后再進(jìn)行發(fā)送,然后瀏覽器端我們調(diào)用的requests方法時(shí)會(huì)自動(dòng)幫助我們解壓(gzip壓縮的等)網(wǎng)頁(yè)內(nèi)容,如果這時(shí)候我們?cè)趐arams強(qiáng)行加入header頭部參數(shù)模擬瀏覽器時(shí),可能會(huì)導(dǎo)致解壓數(shù)據(jù)時(shí)格式不正確,得到的數(shù)據(jù)出現(xiàn)亂碼

2.出現(xiàn)類似b/x204/ds234/4353類似的亂碼文件
可能是由于網(wǎng)站本身數(shù)據(jù)被壓縮為gzip格式的文件,解決方式是在python中引入gzip庫(kù),并通過(guò)調(diào)用decompress(待解壓對(duì)象).encode(‘utf-8’)將原始數(shù)據(jù)進(jìn)行解壓后再進(jìn)行使用

3.只出現(xiàn)中文亂碼
可能是編碼格式不匹配導(dǎo)致
解決方法1:進(jìn)入網(wǎng)站界面,查看html源代碼,找到head頭部中的charset屬性,并將其值復(fù)制下來(lái),eg:
然后再將該值賦值給r.encoding,即r為調(diào)用requests中的get 方法返回的對(duì)象,比如:r.encoding =‘gb2312’
解決方法2:直接令r.encoding = r.apparent_encoding
ps:
charset 查看網(wǎng)頁(yè)中的源代碼的編碼格式
使用方法:引入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鍵不送,同時(shí)點(diǎn)擊urlopen,可以查看文檔,有函數(shù)的具體參數(shù)和使用方法html = rsp.read()cs = chardet.detect(html)print(html)print("cs的類型:{0}".format(type(cs)))print("監(jiān)測(cè)到的cs數(shù)據(jù):{0}".format(cs))html = html.decode("utf-8")# 意思是監(jiān)測(cè)到就使用監(jiān)測(cè)到的,監(jiān)測(cè)不到就使用utf-8print("HTML頁(yè)面為:\n%s" % html)

`

總結(jié)

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

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