beautifulSoup中attrMap和attrs的区别

2024-01-11

我想知道有什么区别attrMap and attrs in 美丽汤 http://www.crummy.com/software/BeautifulSoup/?更具体地说,哪些标签有attrs以及哪些有attrMap?

>>> soup = BeautifulSoup.BeautifulSoup(source)
>>> tag = soup.find(name='input')
>>> dict(tag.attrs)['type']
u'text'
>>> tag.attrMap['type']
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
TypeError: 'NoneType' object is not subscriptable

The attrMap字段是内部字段Tag班级。您不应该在代码中使用它。你应该使用

value = tag[key]
tag[key] = value

这在内部映射到tag.attrMap[key],但只有在之后__getitem__ and __setitem__已确保初始化self.attrMap。这是在_getAttrMap,这对于一个复杂的dict(self.attrs)称呼。所以对于你的代码你将使用

>>> url = "http://stackoverflow.com/questions/8842224/"
>>> soup = BeautifulSoup.BeautifulSoup(urllib.urlopen(url).read())
>>> soup.find(name='input')
>>> tag = soup.find(name='input')
>>> tag['type']
u'text'

如果你想检查给定属性是否存在,那么你必须使用

try:
    tag[key]
    # found key
except KeyError:
    # key not present

or

if key in dict(tag.attrs):
    # found key
else:
    # key not present

正如 Adam 所指出的,这是因为__contains__方法上Tag搜索内容,而不是属性,所以更熟悉key in tag没有达到您预期的效果。出现这种复杂性是因为 BeautifulSoup 处理具有重复属性的 HTML 标签。因此,法线贴图(字典)还不够,因为键可以重复。但如果你想检查是否有any具有给定名称的密钥,然后key in dict(tag.attrs)会做正确的事。

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

beautifulSoup中attrMap和attrs的区别 的相关文章

随机推荐

  • Android、Windows Phone 7 和 Blackberry 的等效配置文件 (iOS)

    在 iOS 中 可以使用配置文件通过无线方式推送电子邮件 wifi 和 VPN 等的配置 有适用于 Android Windows Phone 7 和 Blackberry 的同等产品吗 链接到 iOS 的配置文件http develope
  • PhoneGap 与 jQuery Mobile 性能问题的常见来源有哪些?

    我有一个使用 PhoneGap 1 0 和 jQuery Mobile 1 0b2 编写的应用程序 在 iPhone 和 iPad 上运行 自从我开始使用该框架以来 我一直受到应用程序中 页面 之间切换的性能问题的困扰 按下按钮后 在转换发
  • 如何处理一个类中的多个线程?

    线程通常以两种方式设计 请参阅java教程 http java sun com docs books tutorial essential concurrency runthread html 通过扩展 Thread 类或通过实现 Runn
  • 如何检测滚动条在浏览器的哪一侧 - 向右还是向左(在 RTL 的情况下)?

    For 某些浏览器 Safari Edge IE 会自动将滚动条移动到左侧 这是正确的行为 不幸的是 主要浏览器 Chrome 和 Firefox 的行为方式有所不同 滚动条仍然位于浏览器的右侧 是否可以以编程方式 最好使用 vanilla
  • 以编程方式在代码隐藏中添加视觉状态设置器

    我正在将 8 1 Universal 转换为 UWP 我在代码隐藏中有一些代码 可以根据视图模型数据以编程方式在堆栈面板中创建潜在的数百个节点 我正在尝试向其中一些节点添加一些视觉响应规则 我使用的模式基本上是 foreach var it
  • R:对每行内的内容进行四舍五入,使行总计等于我指定的数字

    我有 170 行带小数的数字 需要四舍五入为整数 但是 行总数必须等于我指定的数字 作为一个非常基本的说明 假设我有一个矩阵 1x4 其单元格内容为 1 2 3 4 7 7 5 3 但假设这些数字代表个体 因此我需要将它们四舍五入为整数 这
  • A==0 真的比 ~A 更好吗?

    问题设置简介 我正在做一些基准测试 涉及 A and A 0for a double array with no NaNs 两者都转换为A到一个逻辑数组 其中所有zeros被转换为true值和其余设置为false价值观 对于基准测试 我使用
  • 如何在数据库中存储站点范围的设置?

    我正在讨论三种不同的方法来存储 Web 应用程序的站点范围设置 一个键 值对查找表 每个键代表一个设置 Pros实施简单 Cons对个人设置没有限制 单行设置表 Pros每个设置默认值和约束 Cons 很多设置意味着很多列 不确定 Post
  • 将所有流量转发到 http 代理(隧道)

    我需要一个开源应用程序 c 或 c 来获取所有 Windows http 流量并转发到 http 代理 有一个名为 Proxifier 的应用程序可以执行此操作 但我希望开源项目嵌入到我的应用程序中 或者至少有一个免费的命令行程序可以执行此
  • 找不到函数“kable_pipe”/“kable_simple”

    我正在尝试使用创建一个表knitr kable head mtcars 1 4 simple knitr kable head mtcars 1 4 pipe 虽然这应该按照https bookdown org yihui rmarkdow
  • Swift 3 - NSFetchRequest 不同的结果

    任何帮助表示赞赏 Xcode 自动更新到 8 我的目标是 IOS 9 3 已转换所有代码 但现在有一件事打破了 我在类似问题中尝试了各种建议 我的获取请求was以前的工作现在被打破了 我的目标是获得一份独特的清单 应用程序上线崩溃 let
  • 如何使用 JAXB 注释指定模式约束?

    我正在使用 JAX WS 和 JAXB 开发 SOAP 应用程序 我想为其中一个字段指定模式约束 荷兰邮政编码 d 4 A Z 2 使用这很容易做到xsd pattern 但我找不到等效的 JAXB 注释 我该如何实现这一目标 你不能 这个
  • Azure DevOps - 在 Git 子模块中使用 YAML 模板

    所以我有1个项目的11个存储库 它们都是微服务 我有一个名为 DevOps 的存储库 其中必须在 YAML 构建之间共享的所有内容都使用 Git 子模块进行共享 由于某种原因 我似乎无法引用 git 模块中的 yaml 模板 Options
  • 是否可以使用 PlantUML 绘制独立的箭头?

    我正在创建一个带有不同类型箭头 直线 虚线 点线等 的图表 但我不想为每个箭头添加标签 而是想创建一个图例 其中replica每种箭头类型的旁边都会显示其含义 有没有办法告诉 PlantUML 简单地绘制特定箭头类型的一小部分 有没有办法告
  • Django 版本更新 Django: 3.1.9 从 Django: 3.1.8 后出现错误“SuspiciousFileOperation”

    更新到 Django 3 1 9 后 我收到此错误 在 Django 3 1 8 上它工作正常 我有一个带有 FileField 的文件模型 如下所示 class JobFiles BaseModel category models Cha
  • Kestrel 是否像 Node.js 一样使用单线程来处理请求?

    Both Kestrel https learn microsoft com en us aspnet core fundamentals servers kestrel and Node js https nodejs org en ab
  • Blackberry 9800 模拟器在启动浏览器时崩溃

    Blackberry 9800 模拟器在启动浏览器时崩溃 抛出异常 JVM 错误 104 未捕获 非法状态异常 这是模拟器的全新安装 没有安装任何第三方应用程序 我非常想用它来测试 Web 应用程序 设备上的所有其他应用程序似乎都可以正常运
  • UIDEVICE方向

    大家好 我有我的启动屏幕 我想以横向模式显示它 并以纵向模式显示所有其他屏幕 我的根视图控制器充当启动屏幕我正在 viewdidload 方法中编写此代码 UIDevice currentDevice setOrientation UIIn
  • 部署 Symfony2 项目

    我们正在开发一个 Symfony2 项目 现在 它已完成并准备部署 我们将整个项目文件上传到服务器 当然通过 ftp 和数据库 现在 当我们打开它的任何页面时 我们都只是一个空白页面 空源代码 缓存是干净的 日志没有显示任何新内容 我们在
  • beautifulSoup中attrMap和attrs的区别

    我想知道有什么区别attrMap and attrs in 美丽汤 http www crummy com software BeautifulSoup 更具体地说 哪些标签有attrs以及哪些有attrMap gt gt gt soup