分类: 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")
没有错误。