LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3243|回复: 6

python做的一个小程序,有点问题

[复制链接]
发表于 2009-3-15 11:01:34 | 显示全部楼层 |阅读模式
下面是我做的一个程序,用来从起点网站取出我看的那几部小说的最新章节题目,但有时运行正常,有时就会出现编码异常(UnicodeDecodeError: 'gbk' codec can't decode bytes in position 1-2: illegal multibyte sequence),不知道怎么回事


  1. # -*- coding: cp936 -*-[color=red]此处改为coding: gbk[/color]
  2. import urllib2
  3.   
  4. bookindex={
  5.     "巫墓":"http://www.qidian.com/Book/1051839.aspx",
  6.     "盘龙":"http://www.qidian.com/Book/1017141.aspx",
  7.     "斗罗大陆":"http://www.qidian.com/Book/1115277.aspx"
  8. }
  9. def getURL(url):
  10.     try:
  11.         fp = urllib2.urlopen(url)
  12.     except:
  13.         print 'get url exception'
  14.         return[]
  15.     p = re.compile('''^<font color="#FF0000">第''')
  16.     content=fp.read()
  17.     fp.close()
  18.     return content

  19. findstr1='''#FF0000'''
  20. findstr2='''</font>'''

  21. for name in bookindex.keys():
  22.     content=getURL(bookindex[name]).decode("cp936")[color=red]#此处改为decode("gbk")[/color]
  23.     begin = content.index(findstr1) + 9
  24.     end = content.index(findstr2,begin)
  25.     print name
  26.     print content[begin:end]
  27. raw_input("按任意键退出!")

复制代码


谢谢2,3楼的提醒,我用了gbk编码后就正常了
发表于 2009-3-21 20:14:20 | 显示全部楼层
我觉得是不是你程序开头的那个coding的原因。 你把那行改成coding:utf-8试试。
  1. #-*- coding: utf-8 -*-
复制代码
再比如下面的程序运行的错误应该和你的程序一样:
  1. #!/usr/bin/python
  2. # -*- coding: cp936 -*-
  3. a= u'朱镕基您好'
复制代码
但如果改成utf-8的就没有问题。
回复 支持 反对

使用道具 举报

发表于 2009-3-22 00:30:17 | 显示全部楼层
print一下你content的内容,可能有的时候搜索到的数据不太对
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-22 16:09:41 | 显示全部楼层
我把编码改成gbk,有时就能取到网页内容,有时就出现上边的Error了,而且还会出现三个小说中两个能取到另一个出异常的情况,难道一个网站还会用几种编码方式 ?
回复 支持 反对

使用道具 举报

发表于 2009-6-10 18:02:00 | 显示全部楼层
佩服楼主,厉害
回复 支持 反对

使用道具 举报

发表于 2009-6-20 17:22:44 | 显示全部楼层
这个使用gbk 编码,有时候无法 decode,使用 gb18030 这个大字符集可以
回复 支持 反对

使用道具 举报

发表于 2009-6-29 08:20:08 | 显示全部楼层
编码问题……
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表