Python 3.x 在<;span>;标签

Python 3.x 在<;span>;标签,python-3.x,Python 3.x,我刚刚接触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/unk

我刚刚接触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>

马照
马匹侧面图
  • 年龄3yo
  • Foaled17/11/2014
  • 新西兰乡村酒店
  • 肯布拉庄园酒店
  • 性感的
  • 色灰
  • 能工巧匠
  • 大明本质
  • 教练
  • 收入19795美元
业主
    Bell View公园螺柱(经理:A P Mackrell)

使用HTML/XML有很多选项。我更喜欢
parsel
软件包。您可以使用以下命令将其安装到您的环境中:

$ pip install parsel
之后,您可以像这样使用它:

from parsel import Selector
sel = Selector(html)
sel.css('ul li::text').extract()
# ['Age',
#  'Foaled',
#  'Country',
#  'Location',
#  'Sex',
#  'Colour',
#  'Sire',
#  'Dam',
#  'Trainer',
#  'Earnings',
#  'Bell View Park Stud (Mgr: A P Mackrell)']

可以找到更详细的说明。

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

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)

使用
beautifulsoup
你在谷歌上搜索过吗?我会让帕塞尔试试,是的,我在谷歌上搜索过,我也尝试过这个。tables=soup4.find(“div”,{“id”:“menu”})用于tables中的table:try:profiles=table.span用于profiles中的profile:try:print(profile.text)except:pass except:pass对不起,这是一种形式,想把这个地方弄清楚also@Shaun我建议您阅读更多关于Python的内容。您几乎不应该在不提及特定异常的情况下使用
except
语句。在这种情况下,我认为除了语句之外,这些
语句是完全不必要的。[code]tables=soup4.find(“div”,“id”:“menu”})对于table in tables:try:profiles=table.span对于profiles in profile:try:print(profile.text)除外:通过除外:通过[/code]
3yo
17/11/2014
New Zealand
Kembla Grange
Filly
Grey
Mastercraftsman
In Essence

R & L Price

$19,795