1
westy Jun 20, 2012 百度的页面是GB2312编码的貌似。
|
3
hiwljun Jun 20, 2012 试试用:
response = urllib2.urlopen('http://www.baidu.com').encode('gb2312') |
5
yangg Jun 20, 2012 html = response.read().decode('gb2312');
|
9
alai Jun 20, 2012 2009-04-15
关于抓取中文页面的一点小总结 - [python] 说起来简单,但也是经过好几个项目,来来回回出问题得出来的。 +最终转成UTF8输出是毋庸置疑的。 +抓的如果是中文页面的话,用GB18030来decode是比较正统的方法,gb2312是一个误区,其实我们的页面中使用的字符编码已经早就超出2312的那些了。 +明明是中文页面抓回来却没法用18030来decode的话,一般是因为页面中混杂了非法字符的原因,可以用ignore忽略掉非法字符。 |
10
alafeizai Jun 20, 2012 ignore正解
|
11
liuxurong OP UnicodeEncodeError: 'gbk' codec can't encode character '\xa9' in position 26408: illegal multibyte sequence
|
12
c Jun 20, 2012 这年代了还用urllib2呀。 用requests吧,结果自动解码成unicode
>>> import requests >>> r = requests.get('http://www.baidu.com') >>> r.text .... >>> type(r.text) <type 'unicode'> |
13
c Jun 20, 2012 BF也过时了,用pyquery吧。
>>> from pyquery import PyQuery as pq >>> html = pq(r.text) >>> print html('title').text() 百度一下,你就知道 |
15
tuoxie007 Jun 20, 2012 |
16
clowwindy Jun 20, 2012 因为是 encode error,所以楼主是 print 的时候挂掉的,并且楼主一定在用简体中文 windows
解决方法就是改用 Cygwin,远离傻逼 windows 终端 |
18
INT21H Jun 20, 2012 慢慢的就会发现BS的效率太低了,最后走上了re的不归路 =。=
|
19
ling0322 Jun 20, 2012 这个和控制台的编码(默认是GBK)有关吧, 在IDLE中运行没有问题
|
22
lddhbu Apr 19, 2013
解决了我的问题
|