代码之家  ›  专栏  ›  技术社区  ›  Vinay

使用HTMLParser提取数据

  •  2
  • Vinay  · 技术社区  · 10 年前
    <tr>
      <td style="color: #0000FF;text-align: center"><p>Sam<br/>John<br/></p></td>
    </tr>
    

    我正在使用python HTMLParser module 从下面的html片段中提取Sam和John的值,但是 处理_数据 功能是只捕获Sam而不捕获John。

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

    1 回复  |  直到 10 年前
        1
  •  4
  •   alecxe    10 年前

    您可以有一个实例级变量 True / False 价值观将其设置为 真的 如果 p 标签已启动, 错误 如果 p 标记结束。当值为 真的 ,获取 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
    
    推荐文章