【问题标题】:Extract data using HTMLParser使用 HTMLParser 提取数据
【发布时间】:2014-10-16 08:26:14
【问题描述】:
<tr>
  <td style="color: #0000FF;text-align: center"><p>Sam<br/>John<br/></p></td>
</tr>

我正在使用 python HTMLParser module 从下面的 html sn-p 中提取值 Sam 和 John,但 handle_data 函数只捕获 Sam 而不是 John。

我怎样才能同时得到 Sam 和 John?

【问题讨论】:

  • 是否需要使用HTMLParser 模块?
  • 感谢您的回复。最好是因为我已经完成了大部分html文档的解析,只剩下这部分了。
  • 您能否提供一个very minimal example 描述您的问题?这将有助于修复代码中可能存在的问题。
  • 对不起,我可能在某个地方出错了,它正在工作。会回来的。谢谢

标签: python html html-parsing html-parser


【解决方案1】:

您可以拥有一个具有True/False 值的实例级变量。如果p 标签开始,则将其设置为True,如果p 标签结束,则将其设置为False。当值为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

【讨论】:

    猜你喜欢
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 2015-07-18
    • 2014-08-06
    相关资源
    最近更新 更多