使用HTMLParser提取数据

时间:2014-08-22 13:04:43

标签: python html html-parsing html-parser

<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?

1 个答案:

答案 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