在两个标题之间使用ULSIN来美化文本

2024-10-03 13:26:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着用beauthoulsoup从演唱会指南中按流派列出一些文本。我对这一点完全陌生,我发现我可以返回一个流派列表和一个完整的演唱会标题列表,但当然我只想返回与特定流派相关的演唱会标题(然后转到下一个流派并获取其演唱会标题等)。演唱会指南的源代码如下:

<h3>indie</h3>
    <span class="gig-title"><a href="/gig/BandA">BandA</a></span> 
    <span class="gig-title"><a href="/gig/BandB">BandB</a></span> 
    <span class="gig-title"><a href="/gig/BandC">BandC</a></span> 

<h3>jazz</h3>
    <span class="gig-title"><a href="/gig/BandD">BandD</a></span> 
    <span class="gig-title"><a href="/gig/BandE">BandE</a></span>

我可以找到所有类型和演唱会的标题,比如:

^{pr2}$

但是,我只想返回文本:“BandA”,“BandB”,“BandC”—这是两个h3(genre)标记之间的文本,然后再转到下一个流派。在

我该如何处理这个问题?在


Tags: 文本标题列表title指南h3classhref
1条回答
网友
1楼 · 发布于 2024-10-03 13:26:08

您可以使用findall()同时查找头和数据。然后只需处理您需要的数据:

代码:

def get_genre_band(soup):
    genre = None
    for node in soup.findAll(['h3', 'span']):
        if node.name == 'h3':
            genre = node.text
        elif 'gig-title' in node.get('class', ''):
            yield genre, node.text

测试代码:

^{pr2}$

结果:

indie BandA
indie BandB
indie BandC
jazz BandD
jazz BandE

相关问题 更多 >