`
john2007
  • 浏览: 76222 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

htmlparser 解析html标签中文属性且未加标签 bug解决办法

阅读更多

bug:

利用HTMLParser解析 带有中文属性的标签,例如:"<img alt=周润发 src="/html"/>"

会出现如下错误:

 

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="""<img alt=周润发 src="/html"/>""".decode("utf8")

 

没有错误。

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics