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
的不同令牌。
答案 0 :(得分:0)
许多XML解析器不能保证一次调用“数据”回调,即使对于连续的文本片段也是如此。 HTMLParser也可能就是这种情况。所以你最好不要依赖它。您可以将数据附加到某个内部缓冲区,然后仅在发生任何其他类型的事件时对其进行处理。
是的,正如collapsar所说,HTML在技术上也是无效的,尽管解析器似乎以合理的方式解析它。