【问题标题】:How can I parse html file using python and beautiful soup from html tag under html tag value?如何使用python和html标签值下的html标签中的美丽汤来解析html文件?
【发布时间】:2018-10-31 02:22:55
【问题描述】:

我的 html 文件多次包含相同的标签 (<span class="fna">)。如果我想区分这个标签,那么我需要查看前一个标签。标记下的标记()(<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>

【问题讨论】:

    标签: python html beautifulsoup


    【解决方案1】:

    使用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 附带的默认元素搜索功能强大得多。请注意,所有结果都以列表形式返回并包含匹配的所有内容。

    【讨论】:

    • 感谢您的评论。我不是很清楚。我只想得到“Chris Pearce”而不是“Justin Dolske”。
    • 在这种情况下,您的 css 选择器应该是“#field-value-reporter a span”
    • 非常感谢您的快速支持
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    • 1970-01-01
    • 2012-02-05
    • 1970-01-01
    • 2022-10-20
    • 2018-07-18
    相关资源
    最近更新 更多