首页 > 解决方案 > 如何使用python和html标签值下的html标签中的美丽汤来解析html文件?

问题描述

我的 html 文件<span class="fna">多次包含相同的 tag()。如果我想区分这个标签,那么我需要查看前一个标签。标记()下的标记(<span id="field-value-reporter">)。在美丽的汤中,我只能应用于标签条件,例如,soup.find_all("span", {"id": "fna"})。此函数提取标签(<span class="fna">)的所有数据,但我只需要包含在标签(<span id="field-value-reporter")下的数据

示例 html 标签:

<div class="value">
    <span id="field-value-reporter">
        <div class="vcard vcard_287422" >
          <a class="email " href="/user_profile?user_id=287422" > 
            <span class="fna">Chris Pearce (:cpearce)
            </span>
          </a>
        </div>
    </span>
</div>

<div class="value">
    <span id="field-value-triage_owner">
        <div class="vcard vcard_27780" >
          <a class="email " href="/user_profile?user_id=27780"> 
            <span class="fna">Justin Dolske [:Dolske]
            </span>
          </a>
        </div>
    </span>
</div>

标签: pythonhtmlbeautifulsoup

解决方案


使用soup.select

soup.select('#field-value-reporter a > span') # select for all tags that are children of a tag whose id is field-value-reporter

>>> [<span class="fna">Chris Pearce (:cpearce)</span>]

soup.select使用 css 选择器,在我看来,它比BeautifulSoup. 请注意,所有结果都作为列表返回,并包含匹配的所有内容。


推荐阅读