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

2023-12-01

我正在尝试使用 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://example.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', and 'remository', 实例属性self.tag, self.attname and self.attvalue, 通过设置__init__来自传递给它的参数 - 我避免了上面代码中的廉价泛化步骤,以避免模糊核心点(跟踪嵌套标签的计数并在记录状态处于活动状态时将数据累积到列表中)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 python HTMLParser 库从特定 div 标签中提取数据? 的相关文章

  • 如何编写高效的配对算法?

    我需要一种算法的帮助 该算法可以有效地将人们分组 并确保以前的配对不会重复 例如 假设我们有 10 位候选人 candidates 0 1 2 3 4 5 6 7 8 9 并假设我们有一个先前匹配的字典 这样每个键值对即candidate
  • 01 无效令牌[重复]

    这个问题在这里已经有答案了 嘿 学习 python3有一段时间了 遇到字典和dictionary name get 方法并尝试获取随机键值 问题 data data get key 1 它有效并且返回 1 但如果我使用data get ke
  • 用于打印 C/C++ 文件的所有函数定义的 Python 脚本

    我想要一个 python 脚本来打印 C C 文件中定义的所有函数的列表 e g abc c定义两个函数为 void func1 int func2 int i printf d i return 1 我只想搜索文件 abc c 并打印其中
  • 代理阻止网络套接字?如何绕行

    我有一个用 Python 编写的正在运行的 websocket 服务器 来自https github com opiate SimpleWebSocketServer https github com opiate SimpleWebSoc
  • 在 C# 中实例化 python 类

    我已经用 python 编写了一个类 我想通过 IronPython 将其包装到 net 程序集中 并在 C 应用程序中实例化 我已将该类迁移到 IronPython 创建了一个库程序集并引用了它 现在 我如何真正获得该类的实例 该类看起来
  • Python:如何重构循环导入

    我有件事可以帮你做engine setState
  • 如何在Python中正确声明ctype结构+联合?

    我正在制作一个二进制数据解析器 虽然我可以依靠 C 但我想看看是否可以使用 Python 来完成该任务 我对如何实现这一点有一些了解 我当前的实现如下所示 from ctypes import class sHeader Structure
  • 从文档字符串生成 sphinx 文档不起作用

    我有一个具有以下结构的项目 我想保留 my project build here is where sphinx should dump into requirements txt make bat Makefile more config
  • 如何创建指向指针数组的 Python ctypes 指针

    我需要学习如何处理char 在下面的 C 方法中通过 Python ctypes 我通过使用调用其他只需要单个指针的方法做得很好create string buffer 但此方法需要一个指向指针数组的指针 ladybugConvertToM
  • 将带有两层分隔符的字符串转换为字典 - python

    给定一个字符串 s x t1 ny t2 nz t3 我想转换成字典 sdic x 1 y 2 z 3 我通过这样做让它工作 sdic dict tuple j split t for j in i for i in s split n F
  • 如何在 Spyder IDE 中安装 Selenium 包

    我刚刚在工作中安装了 Spyder IDE 仅 Spyder 不是整个 Anaconda 并且希望使用 FireFox 自动化我的工作 我的问题是 如何安装 Selenium 软件包 I figured it out Here is ins
  • Python:使用列表创建二叉搜索树

    我的代码的目标是从 txt 文件中获取每个单独的单词并将其放入列表中 然后使用该列表创建二叉搜索树来计算每个单词的频率 并按字母顺序打印每个单词及其频率 中的每个单词只能包含字母 数字 或 我无法用我的初学者编程知识来做的部分是使用我拥有的
  • 通过套接字发送字符串(python)

    我有两个脚本 Server py 和 Client py 我心中有两个目标 能够从客户端一次又一次地向服务器发送数据 能够将数据从服务器发送到客户端 这是我的 Server py import socket serversocket soc
  • 是否可以在 html 中将单选按钮标签助手值属性设置为“已选中”?

    我正在寻找一种方法来使用单选按钮标签帮助器上的值属性来通知按钮是否被选中 而不是使用单独的字段进行选择 我找到了 Shyju 的答案相关问题 https stackoverflow com questions 34570908 radio
  • Twitter Bootstrap 行过滤器/搜索框

    我无法找到有关如何为 Twitter Bootstrap 创建简单搜索查询或行过滤器的教程 我已经尝试了很多 我不确定是否我做错了什么或者插件与 Bootstrap 不兼容 如果可以的话请帮忙 我试过了 document ready fun
  • 对 pandas 数据框中的每一列应用函数

    我如何以更多的熊猫方式编写以下函数 def calculate df columns mean self df means for column in df columns columns tolist cleaned data self
  • 如何在 Python 中解析损坏的 XML?

    我无法影响的服务器发送的 XML 非常损坏 具体来说 Unicode WHITE STAR 将被编码为 UTF 8 E2 98 86 然后使用 Latin 1 转换为 HTML 实体表 我得到的是 acirc 98 86 9 个字节 位于声
  • Synapse Notebook 参考 - 使用参数从另一个笔记本调用 Synapse Notebook

    我有一个带有参数的突触笔记本 我试图从另一个笔记本调用该笔记本 我正在使用 run 命令 我应该如何将参数从基本笔记本传递到正在调用的笔记本 另外 对我来说 上述答案不起作用 作为对此问题的单独解决方案 下面是一个答案 打开笔记本并转到最右
  • 在 Gensim 中通过 ID 检索文档的字符串版本

    我正在使用 Gensim 进行一些主题建模 并且已经达到使用 LSI 和 tf idf 模型进行相似性查询的程度 我取回 ID 集和相似点 例如 299501 0 64505910873413086 如何获取与 ID 在本例中为 29950
  • 如何获取所有Python标准库模块的列表?

    我想要类似的东西sys builtin module names标准库除外 其他不起作用的事情 sys modules 只显示已经加载的模块 sys prefix 包含非标准库模块并且似乎无法在 virtualenv 内工作的路径 我想要这

随机推荐

  • 使用 Selenium Webdriver 通过元素包含的文本选择元素

    我刚刚开始使用 Selenium Webdriver 我立即遇到了一个问题 涉及我尝试选择 单击的按钮 所有按钮都没有 ID 且共享同一类 所以我想知道如何通过它们包含的独特文本来选择它们 我想可能使用 css 选择器 但我不确定如何告诉它
  • Android CalendarContract,删除重复事件会导致所有事件在日历上消失?

    我有一个同步适配器 可以处理同步日历和事件 我可以很好地删除正常事件 但每当我删除重复事件时 日历上的所有事件都会消失 我注意到的一件事是 每当我删除重复事件时 Instances表被清空 这解释了事件消失 这Events表符合预期 重复事
  • django将静态路径添加到当前url

    我的静态文件位于文件夹中assets在应用程序目录中 当我进入主页时 静态文件正在从 assets 如果我去 house 它尝试从加载静态文件 house assets 这显然会导致文件不加载 因为它们不存在 这是可能相关的部分settin
  • NSIS 获取产品版本

    我正在尝试使用 NSIS 2 49 获取 ProductVersion 有人有如何获取产品版本的示例吗 GetDllVersion C data Some exe R0 R1 the two values were read during
  • 带有大图标的选项卡栏

    我想知道是否有一种方法可以实现仅包含大图标的选项卡栏 我在下面附上了一张图片以供参考 我对创建自己的选项卡栏控制器和自己管理视图控制器不感兴趣 这是我的解决方案 我创建了一个类 它是UITabBarController 自定义TabBarC
  • 验证嵌套属性的数量

    我有一个带有嵌套属性的模型 class Foo lt ActiveRecord Base has many bar accepts nested attributes for bar end 效果很好 但是我想确保对于每个 Foo 我至少有
  • 如何获取 QWebEngineView 中加载的页面的 html

    我正在尝试获取 PyQT5 QWebEngineView 中加载的页面的 HTML 这是一个简单的例子 import sys from PyQt5 QtCore import from PyQt5 QtWebEngineWidgets im
  • 如何在 Forge Viewer 中使用properties.db?

    sqlite数据库文件properties db通常是输出中最大的文件https extract autodesk io 它在 Forge Viewer 中有何用途 如果未使用 为什么会在 ZIP 文件中提供它 此示例复制两者的原因是该示例
  • 正则表达式匹配连续的 n (字母数字)

    我正在尝试匹配字符串中的连续 n 个 字母数字 字符 其中 n 3 i7g172w2n YES it has 3 consecutive number adab172cd NO it has 4 consecutive alpha even
  • “.subsurface()”、“.convert_alpha()”和“%”有什么作用?

    我正在尝试学习 Pygame 我正在遵循的教程中有一个部分解释了如何为精灵设置动画 它为我提供了一个精灵表 其中包含 8 个图像 每个图像的尺寸为 128x128 而整个表的尺寸为 1024x128 然后它呈现以下代码 usr bin en
  • 具有多种运算的三元运算符

    当每种情况要执行多个操作时 可以使用三元运算符吗 例如我可以在这里使用它吗 if dwelling dwelling dwelling 0 nodeValue first operation letterDwelling dwelling
  • 使用 pandas 数据框矢量化复杂切片

    出于速度目的 我希望能够对这段代码进行矢量化 目的是根据两个单独数组中包含的一对日期元组计算一个函数 在本例中为标准差 import pandas as pd import numpy as np asd 1 pd Series 0 01
  • ngrok 无法正常工作来测试 HTTP

    我下载了 ngrok 这样我就可以测试我的网站的 http 和 https 请求 如果有人试图进入我网站的特定 url 并且这将是一个简单的 http 请求 我会拒绝它 首先 我的本地主机工作在 8080 端口 我启动 ngrok 它给了我
  • 定义菜单项快捷方式

    我需要一种简单的方法来设置菜单项的快捷方式 但这不适用于快捷方式 只需单击即可
  • 删除 MySQL 中的数百万行

    我最近发现并修复了我正在开发的一个网站中的一个错误 该错误导致表中出现数百万个重复的数据行 即使没有它们 这些数据也会相当大 仍然有数百万 我可以轻松找到这些重复的行 并且可以运行单个删除查询来删除它们 问题是 尝试一次删除这么多行会长时间
  • 密码重置电子邮件出现 NoReverseMatch 错误

    我一直在尝试创建一个密码重置电子邮件系统 我一直在关注这个tutorial 当我尝试访问时出现此错误 password reset django urls exceptions NoReverseMatch 未找到 password res
  • Webdriver:在 Firefox 中单击“共享位置”按钮

    我正在尝试使用 Webdriver 来测试位置感知网站 并希望以编程方式 使用 WebDriver API 调用 单击当我单击 Web 应用程序的位置感知部分的链接时弹出的 共享位置 按钮 这是一个浏览器提示符 似乎不是 DOM 元素或 j
  • 用什么替换路径中的空格字符?

    我从 Java 应用程序启动 bash 并且我的路径中有在 bash 空间内执行的命令 例如 cd Documents and Settings test 我使用 Process Builder 运行命令 但当路径有空格时它不起作用 我尝试
  • Python/Selenium 隐身/私有模式

    我似乎找不到任何有关如何使 Selenium 以隐身模式打开浏览器的文档 我是否必须在浏览器中设置自定义配置文件 首先 自从selenium默认情况下会启动一个带有干净 全新配置文件的浏览器 您实际上已经在私密浏览了 参考 Python 在
  • 如何使用 python HTMLParser 库从特定 div 标签中提取数据?

    我正在尝试使用 python HTMLParser 库从 HTML 页面中获取值 我想要获取的值位于此 HTML 元素内 div 20 div 到目前为止 这是我的 HTMLParser 类 class LinksParser HTMLPa