python htmlparser'&'字符

时间:2014-02-27 08:52:42

标签: python html-parsing

{p} HTMLParser python模块在​​解析具有&字符的数据时出现问题。下面的html代码取自here

<td style="text-align: center; color:#c00;">15:30</td><td>Haber</td><td>Haber & Aktüalite</td>

解析器代码是:

from HTMLParser import HTMLParser

class HTMLParser_haberciniz(HTMLParser):
    def __init__(self):
        HTMLParser.__init__(self)
        self.inlink = False

    def handle_starttag(self, tag, attrs):
        if tag == 'td':
            self.inlink = True

    def handle_endtag(self, tag):
        if tag == 'td':
            self.inlink = False

    def handle_data(self, data):
        if self.inlink :
            print data

问题是它将所有Haber&Aktüalite解析为实际应该是Haber & Aktüalite的不同令牌。

1 个答案:

答案 0 :(得分:0)

许多XML解析器不能保证一次调用“数据”回调,即使对于连续的文本片段也是如此。 HTMLParser也可能就是这种情况。所以你最好不要依赖它。您可以将数据附加到某个内部缓冲区,然后仅在发生任何其他类型的事件时对其进行处理。

是的,正如collapsar所说,HTML在技术上也是无效的,尽管解析器似乎以合理的方式解析它。