<tr>
<td style="color: #0000FF;text-align: center"><p>Sam<br/>John<br/></p></td>
</tr>
我使用python HTMLParser module从下面的html片段中提取Sam和John的值,但 handle_data 函数只捕获Sam而不是John。
我怎样才能得到Sam和John?
答案 0 :(得分:3)
您可以拥有一个具有True
/ False
值的实例级变量。如果True
标记已开始,则将其设置为p
,如果False
标记已结束,则设置为p
。如果值为True
,请使用handle_data()
方法获取数据:
from HTMLParser import HTMLParser
data = """
<tr>
<td style="color: #0000FF;text-align: center"><p>Sam<br/>John<br/></p></td>
</tr>
"""
class Parser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self)
self.recording = False
def handle_starttag(self, tag, attrs):
if tag == 'p':
self.recording = True
def handle_endtag(self, tag):
if tag == 'p':
self.recording = False
def handle_data(self, data):
if self.recording:
print data
parser = Parser()
parser.feed(data)
打印:
Sam
John