Python爬虫的乱码问题?
问题描述
使用python实现模拟登陆并爬取返回页面的时候出现了乱码,目标网页的编码使用utf-8
相关代码:
#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
控制台输出信息:
第一次遇见这种乱码比较懵逼
问题解答
回答1:urllib2没有处理压缩的问题,你要使用gzip解压,比如这样
from StringIO import StringIOimport gzipif response.info().get(’Content-Encoding’) == ’gzip’: buf = StringIO(text) f = gzip.GzipFile(fileobj=buf) data = f.read()
总结urllib2比较底层,建议使用requests
相关文章:
1. javascript - 百度坐标,返回目标附近有哪些坐标2. javascript - 关于jsp中嵌入js代码的问题3. PHP类中的$this4. angular.js - angurlarJS的安卓的微信端中用加载ngCookies会出错的问题5. clone - git sourceTree克隆仓库时,都不停弹出Password Required弹窗,即时输入正确的git账号密码还是弹出6. javascript - html5多个label中其中一个触发change,如何判断是哪一个出发了change7. python - 怎么通过vpn连内网ftp?8. javascript - 关于fullpage.js的横向滚动控制9. angular.js - angularjs 百度统计怎么统计10. python 正则表达式提取

网公网安备