Python爬蟲(chóng)的亂碼問(wèn)題?
問(wèn)題描述
使用python實(shí)現(xiàn)模擬登陸并爬取返回頁(yè)面的時(shí)候出現(xiàn)了亂碼,目標(biāo)網(wǎng)頁(yè)的編碼使用utf-8
相關(guān)代碼:
#coding=utf-8import urllibimport urllib2headers={ ’Accept’:’text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8’, ’Accept-Encoding’:’gzip, deflate’, ’Accept-Language’:’zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3’, ’Connection’:’keep-alive’, ’User-Agent’:’Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36’}payload={ ’_eventId’:’submit’, ’lt’:’_cF2A0EB3F-D044-046C-6F4A-C828DE0ACE8E_k8B4BE5F5-4CAD-375D-0DDC-FB84A18445DF’, ’password’:’’, ’submit’:’登 錄’, ’username’:’’}payload=urllib.urlencode(payload)request = urllib2.Request(posturl, payload, headers)print requestresponse = urllib2.urlopen(request)text = response.read()print text
控制臺(tái)輸出信息:
第一次遇見(jiàn)這種亂碼比較懵逼
問(wèn)題解答
回答1:urllib2沒(méi)有處理壓縮的問(wèn)題,你要使用gzip解壓,比如這樣
from StringIO import StringIOimport gzipif response.info().get(’Content-Encoding’) == ’gzip’: buf = StringIO(text) f = gzip.GzipFile(fileobj=buf) data = f.read()
總結(jié)urllib2比較底層,建議使用requests
相關(guān)文章:
1. javascript - iframe 為什么加載網(wǎng)頁(yè)的時(shí)候滾動(dòng)條這樣顯示?2. 老師您好!我有一個(gè)問(wèn)題、3. 后端開(kāi)發(fā) - mysql按時(shí)間分段統(tǒng)計(jì)的sql語(yǔ)句怎么寫好?4. 網(wǎng)頁(yè)爬蟲(chóng) - python+requests 網(wǎng)頁(yè)重定向求解5. 哭遼 求大佬解答 控制器的join方法怎么轉(zhuǎn)模型方法6. mysql - 在下剛?cè)腴Tsql 關(guān)于sql的語(yǔ)法詢問(wèn)7. c++ - 如何在python的阻塞的函數(shù)中獲取變量值8. list - python 求助9. 初來(lái)乍到,相對(duì)路徑問(wèn)題,新手求教10. 請(qǐng)問(wèn)寫好python模塊以后,文檔怎么寫?
