37,744
社区成员




- import urllib2
- url="http://www.qq.com/"
- headers={"User-Agent":"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1"}
- req = urllib2.Request(url,headers=headers)
- response= urllib2.urlopen(req)
- html = response.read()
- print html
data = urllib2.urlopen(req)
data = data.read()
data = data.decode('unicode-escape')
data = data.encode('utf-8')
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
所以,你应该去用:
htmlUnicode = html.decode("GBK");
或:
htmlUnicode = html.decode("GB18030");
然后再去打印,就可以了。
2.另外,如果你之前发送http请求之前,给了accept-encoding为gzip等值的话,那么返回的是压缩后的二进制,也会导致你看起来以为得到的是乱码,所以也需要你先去解压缩,再去解码才可以。
3.如果在解码和编码时遇到错误UnicodeEncodeError或者是UnicodeDecodeError,则去看:
【总结】Python 2.x中常见字符编码和解码方面的错误及其解决办法
4.上面的内容,只算你要折腾网络抓取所需要了解的部分内容,其他更多的东西,我已整理至相关教程
感兴趣的话,自己去看:
和网络抓取有关的逻辑讲解,工具,示例代码,等等
详解抓取网站,模拟登陆,抓取动态网页的原理和实现(Python,C#等)
搞懂后,再去用具体语言实现,比如python:
Python专题教程:抓取网站,模拟登陆,抓取动态网页
python处理html即字符串时需要搞懂的:
Python专题教程:字符串和字符编码
python处理其他的,比如json,也要搞懂的:
JSON详解
5.其他还有很多相关的内容,内容太多,就不一一贴出来了。
需要的可以联系我。
import urllib2
url="http://www.qq.com/"
headers={"User-Agent":"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1"}
req = urllib2.Request(url,headers=headers)
response= urllib2.urlopen(req)
html = response.read()
print html.decode('gbk')