2
<tr>
  <td style="color: #0000FF;text-align: center"><p>Sam<br/>John<br/></p></td>
</tr>

我正在使用 python HTMLParser 模块从下面的 html 片段中提取值 Sam 和 John,但是handle_data函数只捕获 Sam 而不是 John。

我怎样才能同时得到山姆和约翰?

4

1 回答 1

4

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
于 2014-08-22T13:32:13.460 回答