Chinaunix首页 | 论坛 | 博客
  • 博客访问: 74857
  • 博文数量: 27
  • 博客积分: 2120
  • 博客等级: 大尉
  • 技术积分: 270
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-25 20:51
文章分类
文章存档

2011年(1)

2010年(10)

2009年(16)

我的朋友

分类: Python/Ruby

2010-05-06 22:51:37

bug:

利用HTMLParser解析 带有中文属性的标签,例如:"周润发"

会出现如下错误:

 

raise HTMLParseError(message, self.getpos())

HTMLParser.HTMLParseError: junk characters in start tag: u'\u5468\u6da6\u53d1 src="/html"/>', at line 1, column 1

 

错误原因还是正则表达式惹的祸。

attrfind = re.compile(

    r'\s*([a-zA-Z_][-.:a-zA-Z_0-9]*)(\s*=\s*'

    r'(\'[^\']*\'|"[^"]*"|[-a-zA-Z0-9./,:;+*%?!&$\(\)_#=~@]*))?') 

attrfind 没有匹配中文字符。

 

解决办法:

修改attrfind:

attrfind = re.compile(

    ur'\s*([a-zA-Z_][-.:a-zA-Z_0-9]*)(\s*=\s*'

    ur'(\'[^\']*\'|"[^"]*"|[-a-zA-Z0-9./,:;+*%?!&$\(\)_#=~@\u4e00-\u9fa5]*))?')

 

然后案例测试如下:

 

htmldata="""周润发""".decode("utf8")

 

没有错误。

 

阅读(1307) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~