如何在 BeautifulSoup ISO 标签中转义父属性实际上命名为 <parent>?

Posted

技术标签:

【中文标题】如何在 BeautifulSoup ISO 标签中转义父属性实际上命名为 <parent>?【英文标题】:How to escape parent attribute in BeautifulSoup ISO tag actually named <parent>? 【发布时间】:2014-02-04 15:39:43 【问题描述】:

好的,这有点好笑。这是 XML:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    <parent>
        <groupId>com.parent</groupId>
        <artifactId>parent</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <build>
        <sourceDirectory>src</sourceDirectory>
    </build>

我想使用简单的BeautifulSoup 分层符号来获取实际名为&lt;parent&gt; 的节点,但parent 实际上是此API 中的保留属性标签。

with open(pom) as pomHandle:
    soup = BeautifulSoup(pomHandle)

#this returns the proper build node
buildNode = soup.project.build
#this does not return the proper parent node but the XML parent of the project node
#(which is the whole doc) because 'parent' is reserved
parentNode = soup.project.parent

如何覆盖此限制?

【问题讨论】:

删除了我的答案,好像我错过了什么。我认为,alecxe 的回答应该足够了。 【参考方案1】:

您可以改用find()

soup.project.find('parent')

本质上这是一样的,因为 BeautifulSoupTag 类的 __getattr__() 方法中使用 find 底层。

希望对您有所帮助。

【讨论】:

哥们,你太棒了

以上是关于如何在 BeautifulSoup ISO 标签中转义父属性实际上命名为 <parent>?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 BeautifulSoup.BeautifulStoneSoup 中维护区分大小写的标签?

如何使用 BeautifulSoup 从 HTML 中去除评论标签?

如何在 BeautifulSoup 中访问名为“name”的标签

如何使用 BeautifulSoup 在标签内获取 html 文本

BeautifulSoup 在 findAll 中排除标签

Python/BeautifulSoup - 如何从元素中删除所有标签?