您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何使用python HTMLParser库从特定的div标签提取数据?

如何使用python HTMLParser库从特定的div标签提取数据?

class LinksParser(HTMLParser.HTMLParser):
  def __init__(self):
    HTMLParser.HTMLParser.__init__(self)
    self.recording = 0
    self.data = []

  def handle_starttag(self, tag, attributes):
    if tag != 'div':
      return
    if self.recording:
      self.recording += 1
      return
    for name, value in attributes:
      if name == 'id' and value == 'remository':
        break
    else:
      return
    self.recording = 1

  def handle_endtag(self, tag):
    if tag == 'div' and self.recording:
      self.recording -= 1

  def handle_data(self, data):
    if self.recording:
      self.data.append(data)

self.recording``div从“触发”开始计数嵌套标记数量。当我们处于以触发标签为根的子树中时,我们将数据存储在中self.data

解析末尾的数据保留在其中self.data(字符串列表,如果未满足触发标签,则可能为空)。您可以从类外部的代码在解析结束时直接从实例访问列表,也可以为此目的添加适当的访问器方法,具体取决于目标是什么。

这个类可以很容易地取得多一点的一般使用,以代替在代码中看到的常量文字字符串上面,'div''id',和'remository',实例的属性self.tagself.attname并且self.attvalue,通过设置__init__从传递给它的参数- 我避免了廉价的推广步骤避免混淆核心点(跟踪嵌套标签数量并在记录状态为活动状态时将数据累积到列表中)。

python 2022/1/1 18:23:06 有485人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶