当前位置: 首页 > 知识库问答 >
问题:

使用BeautifulSoup在confluence HTML中查找文本标记

柳项明
2023-03-14

我正试图用漂亮的汤刮一个汇合页的身体。当使用Confluence API时,我会得到以下正文(这只是其中的一部分):

<ac:layout>
    <ac:layout-section ac:type=\"two_equal\">
        <ac:layout-cell>
            <p class=\"auto-cursor-target\"><br /></p>
            <ac:structured-macro ac:name=\"info\" ac:schema-version=\"1\"
                ac:macro-id=\"3fbdeddd-563d-4584-b665-a2116defc645\">
                <ac:rich-text-body>
                    <p>System Status: <ac:structured-macro ac:name=\"status\" ac:schema-version=\"1\"
                            ac:macro-id=\"1cb65333-dc9a-45f0-948b-fb1d1f5403e8\">
                            <ac:parameter ac:name=\"colour\">Green</ac:parameter>
                            <ac:parameter ac:name=\"title\">IN OPERATION</ac:parameter>
                            <ac:parameter ac:name=\"\" />
                        </ac:structured-macro>
                    </p>
                </ac:rich-text-body>
            </ac:structured-macro>
            <p class=\"auto-cursor-target\"><br /></p>
        </ac:layout-cell>
        <ac:layout-cell>
            <p class=\"auto-cursor-target\"><br /></p>
            <ac:structured-macro ac:name=\"info\" ac:schema-version=\"1\"
                ac:macro-id=\"b7d32741-c5c2-4d84-b7f3-fb3f391080ab\">
                <ac:rich-text-body>
                    <p>Page Status: <ac:structured-macro ac:name=\"status\" ac:schema-version=\"1\"
                            ac:macro-id=\"c947d571-9ac5-4199-a527-57fd0c8e6170\">
                            <ac:parameter ac:name=\"colour\">Green</ac:parameter>
                            <ac:parameter ac:name=\"title\">IN OPERATION</ac:parameter>
                            <ac:parameter ac:name=\"\" />
                        </ac:structured-macro>
                    </p>
                </ac:rich-text-body>
            </ac:structured-macro>
            <p class=\"auto-cursor-target\"><br /></p>
        </ac:layout-cell>
    </ac:layout-section>
<ac:parameter ac:name=\"title\">IN OPERATION</ac:parameter>

我已经搜索了我的屁股,但不知何故,我似乎不明白如何搜索一个段落与特定的文本。

另一件我认识但不明白的事情是:当我使用:garages=soup.find_all('p')搜索所有段落时,我会找到该段落,但它包含了所有子元素的所有文本,因此段落文本如下所示:“System Status:GreenIN Operation”

共有1个答案

金嘉
2023-03-14

使用xml解析器并传入参数[name=“title”]

from bs4 import BeautifulSoup as bs 

xml = '''<ac:layout>
    <ac:layout-section ac:type=\"two_equal\">
        <ac:layout-cell>
            <p class=\"auto-cursor-target\"><br /></p>
            <ac:structured-macro ac:name=\"info\" ac:schema-version=\"1\"
                ac:macro-id=\"3fbdeddd-563d-4584-b665-a2116defc645\">
                <ac:rich-text-body>
                    <p>System Status: <ac:structured-macro ac:name=\"status\" ac:schema-version=\"1\"
                            ac:macro-id=\"1cb65333-dc9a-45f0-948b-fb1d1f5403e8\">
                            <ac:parameter ac:name=\"colour\">Green</ac:parameter>
                            <ac:parameter ac:name=\"title\">IN OPERATION</ac:parameter>
                            <ac:parameter ac:name=\"\" />
                        </ac:structured-macro>
                    </p>
                </ac:rich-text-body>
            </ac:structured-macro>
            <p class=\"auto-cursor-target\"><br /></p>
        </ac:layout-cell>
        <ac:layout-cell>
            <p class=\"auto-cursor-target\"><br /></p>
            <ac:structured-macro ac:name=\"info\" ac:schema-version=\"1\"
                ac:macro-id=\"b7d32741-c5c2-4d84-b7f3-fb3f391080ab\">
                <ac:rich-text-body>
                    <p>Page Status: <ac:structured-macro ac:name=\"status\" ac:schema-version=\"1\"
                            ac:macro-id=\"c947d571-9ac5-4199-a527-57fd0c8e6170\">
                            <ac:parameter ac:name=\"colour\">Green</ac:parameter>
                            <ac:parameter ac:name=\"title\">IN OPERATION</ac:parameter>
                            <ac:parameter ac:name=\"\" />
                        </ac:structured-macro>
                    </p>
                </ac:rich-text-body>
            </ac:structured-macro>
            <p class=\"auto-cursor-target\"><br /></p>
        </ac:layout-cell>
    </ac:layout-section>
</ac:layout>'''

soup = bs(xml, 'xml')
print([i.text for i in soup.select('parameter[name="title"]')])

仅用于系统状态的

print(soup.select_one('p:contains("System Status:") parameter[name="title"]').text)
 类似资料:
  • 问题内容: 我正在尝试获取HTML文档中包含以下文本模式的元素:#\ S {11} 因此,前者将通过使用以下内容进行匹配: 结果将是这样的: 我可以获取所有匹配的文本(请参见上面的行)。但是我希望文本的父元素匹配,因此我可以将其用作遍历文档树的起点。在这种情况下,我希望所有h2元素都返回,而不是文本匹配。 有想法吗? 问题答案: 印刷品:

  • 问题内容: 我可以使用BS轻松遍历通用标签,但是我不知道如何查找特定标签。例如,我怎么能找到所有的出现?BS可以吗? 问题答案: 以下应该工作 有两种搜索标签的方法。 http://www.crummy.com/software/BeautifulSoup/documentation.html 有关更多文本的理解和使用 http://lxml.de/elementsoup.html

  • 问题内容: 我尝试了soup.find(’!-‘),但似乎没有用。提前致谢。 编辑:感谢您有关如何查找所有评论的提示。我有一个后续问题。如何专门搜索评论? 例如,我有以下注释标记: 我真的只想要这些东西。“ 110518”是我要用作搜索目标的日期YYMMDD。但是,我不知道如何在特定的注释标签中找到某些内容。 问题答案: Pyparsing允许您使用内置表达式搜索HTML注释,并附加解析时回调以验

  • 问题内容: 我没有使用python,BeautifulSoup,Selenium等的经验,但是我很想从网站上抓取数据并将其存储为csv文件。我需要的单个数据样本编码如下(一行数据)。 我需要的输出是 我发现这些数据没有ID或类,但仍以通用文本形式出现在网站中。为此,我分别尝试使用BeautifulSoup和Python Selenium,在这两种方法中,我都陷入了无法提取的麻烦,因为我没有看到任何

  • 问题内容: 我要提取: 来自标签的src的文本和 类数据内的定位标记的文本 我成功地提取了img src,但是从锚标记中提取文本时遇到了麻烦。 这是整个HTML页面的链接。 这是我的代码: 我想做的是 提取图像src(链接)和中的标题,因此例如: 应该提取: 问题答案: 以上所有答案确实可以帮助我构建答案,因此,我对其他用户提出的所有答案投了赞成票:但是我最终对自己正在处理的确切问题汇总了自己的答

  • 本文向大家介绍Python在BeautifulSoup中的元素后找到文本,包括了Python在BeautifulSoup中的元素后找到文本的使用技巧和注意事项,需要的朋友参考一下 示例 假设您有以下HTML: 并且您需要在label元素之后找到文本“ John Smith” 。 在这种情况下,您可以label按文本查找元素,然后使用.next_sibling属性: 印刷品John Smith。