首页 > 解决方案 > 刮掉标签之间的文字

问题描述

我只是 python 的新手,我无法获取标签之间的文本,这是完整表格的 html。

<div id="menu">
    <h4 style="display:none">Horse Photo</h4>
    <ul style="margin-top:5px;border-radius:6px">
        <li style="padding:0">
            <img src="/images/unknown_horse.png" style="width:298px;margin-bottom:-3px;border-radius:5px;">
        </li>
    </ul>
    <h4>Horse Profile</h4>
    <ul>
        <li>Age<span>3yo</span></li>
        <li>Foaled<span>17/11/2014</span></li>
        <li>Country<span>New Zealand</span></li>
        <li>Location<span>Kembla Grange</span></li>
        <li>Sex<span>Filly</span></li>
        <li>Colour<span>Grey</span></li>
        <li>Sire<span>Mastercraftsman</span></li>
        <li>Dam<span>In Essence</span></li>
        <li>Trainer
            <span>
                <a href="/trainer/26970-r-l-price/">R &amp; L Price</a>               
            </span>
        </li>
        <li>Earnings<span>$19,795</span></li>
    </ul>
    <h4>Owners</h4>
    <ul>
        <li style="font:normal 12px 'Tahoma">Bell View Park Stud (Mgr: A P Mackrell)</li>
    </ul>
</div>

标签: python-3.x

解决方案


用于解析 HTML 使用beautifulsoup包。这样您就可以轻松地选择 html 文档的元素。要打印<span>标签中的所有文本,您可以使用以下示例:

data = """
<div id="menu">
    <h4 style="display:none">Horse Photo</h4>
    <ul style="margin-top:5px;border-radius:6px">
        <li style="padding:0">
            <img src="/images/unknown_horse.png" style="width:298px;margin-bottom:-3px;border-radius:5px;">
        </li>
    </ul>
    <h4>Horse Profile</h4>
    <ul>
        <li>Age<span>3yo</span></li>
        <li>Foaled<span>17/11/2014</span></li>
        <li>Country<span>New Zealand</span></li>
        <li>Location<span>Kembla Grange</span></li>
        <li>Sex<span>Filly</span></li>
        <li>Colour<span>Grey</span></li>
        <li>Sire<span>Mastercraftsman</span></li>
        <li>Dam<span>In Essence</span></li>
        <li>Trainer
            <span>
                <a href="/trainer/26970-r-l-price/">R &amp; L Price</a>
            </span>
        </li>
        <li>Earnings<span>$19,795</span></li>
    </ul>
    <h4>Owners</h4>
    <ul>
        <li style="font:normal 12px 'Tahoma">Bell View Park Stud (Mgr: A P Mackrell)</li>
    </ul>
</div>
"""


from bs4 import BeautifulSoup

soup = BeautifulSoup(data, 'lxml')

for li in soup.select('span'):
    if li.text.strip() == '':
        continue
    print(li.text)

将打印:

3yo
17/11/2014
New Zealand
Kembla Grange
Filly
Grey
Mastercraftsman
In Essence

R & L Price

$19,795

推荐阅读