当前位置: 首页 > 面试题库 >

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

邢财
2023-03-14
问题内容

我正在尝试使用python HTMLParser库从HTML页面中获取值。我要保留的值在此html元素内:

...
<div id="remository">20</div>
...

到目前为止,这是我的HTMLParser类:

class LinksParser(HTMLParser.HTMLParser):
  def __init__(self):
    HTMLParser.HTMLParser.__init__(self)
    self.seen = {}

  def handle_starttag(self, tag, attributes):
    if tag != 'div': return
    for name, value in attributes:
    if name == 'id' and value == 'remository':
      #print value
      return

  def handle_data(self, data):
    print data


p = LinksParser()
f = urllib.urlopen("http://domain.com/somepage.html")
html = f.read()
p.feed(html)
p.close()

有人可以指出我正确的方向吗?我希望类功能获得值20。


问题答案:
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__从传递给它的参数-
我避免了廉价的推广步骤避免混淆核心点(跟踪嵌套标签的数量并在记录状态为活动状态时将数据累积到列表中)。



 类似资料:
  • 我正在尝试从网站获取一些数据。它看起来像这样 我只需要得到div标签中的时间值。这是我的Java代码。 它没有给出任何错误,但在日志上 "D/NetworkSecurityConfig:未指定网络安全配置,使用平台默认设置" 我看到也许这可以帮助你解决问题。提前感谢您,任何回应将不胜感激。

  • 我要提取的数据来自这个网站https://www.adobe.com/support/security/advisories/apsa11-04.html。我只想提取 发布日期:2011年12月6日最后更新:2012年1月10日漏洞标识符:APSA11-04 CVE编号:CVE-2011-2462 代码: 输出: 我不想要这些信息。我该如何过滤呢? 平台:全部*注意:Adobe Reader fo

  • 有很多例子可以说明如何创建和使用TensorFlow数据集。 我的问题是如何以numpy格式从TF数据集获取数据/标签?换言之,WAND将是上面这行的反向操作,即我有一个TF数据集,并希望从中获取图像和标签。

  • 问题内容: 我正在尝试使用编译InfluxDB数据库(版本v0.8.8) 但这拉了master分支,我需要标签。 我已尝试做: 但这无法说找不到。 我也试图做一个正规的主分支,然后手动检查出使用标签中以设置corret版本。 使用最后一种方法的问题是,当我尝试使用其依赖项时,它会尝试在master分支中找到它们,而其中的一些不存在于master分支中。 TL; DR :在特定的github标记上执

  • 我不知道如何选择特定的JSON数据。 如何更改此代码以使我只有id,而没有其他响应数据? 我在网上阅读,显然我需要使用结构?我不确定如何处理这个问题。 这将返回...

  • 我想根据特定的标签提取数据/推文。我的python代码可以很好地处理任何标签,除了“#LetsTaxThis”。主要是这是我想用来从tweeter提取数据的标签。 一旦我使用此主题标签运行我的代码,我只能看到2条推文,但是已经有1000条带有此标签的推文。 我的CONSUMER_KEY,CONSUMER_SECRET,ACCESS_TOKEN,ACCESS_SECRET都没问题。因为其他的标签正在