在不复制的情况下获取div中的节点

2024-09-29 23:20:04 发布

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

我有下面的html代码

<div class = "conf">
Brazil vs. Colombia
</ div>
<div class = "targetHour"> 08:00 pm </ div>
</ div>
</ div>
<div class = "matches">
<div class = "conf">
Chilex Argentina
</ div>
<div class = "targetHour"> 08:00 pm </ div>
</ div>
</ div>

我需要得到父div和子div的值,而不复制结果。将每场比赛的时间表与各自的家长联系起来

这是我的密码

for nc in soup.find_all('div', attrs={'class': 'league-data'}):
    campeonato = nc.text
    for hr in soup.find('div', attrs={'class': 'match row cf'}).findAll("div",recursive=False):
        print(campeonato + "|" + hr.text)

Tags: textindivforconfhtmlhrfind
2条回答

另一种选择(假设列表长度为偶数)

from bs4 import BeautifulSoup

data = '''<div class = "conf">
Brazil vs. Colombia
</div>
<div class = "targetHour"> 08:00 pm </div>
</div>
</div>
<div class = "matches">
<div class = "conf">
Chilex Argentina
</div>
<div class = "targetHour"> 08:00 pm </div>
</div>
</div>'''

soup = BeautifulSoup(data, 'lxml')
items = [item.text.strip() for item in soup.select('.conf, .targetHour')]
for i in range(0, len(items), 2):
       print(items[i],items[i+1])

您可以使用zip()函数将匹配项绑定到相应的计划:

from bs4 import BeautifulSoup

data = '''<div class = "conf">
Brazil vs. Colombia
</div>
<div class = "targetHour"> 08:00 pm </div>
</div>
</div>
<div class = "matches">
<div class = "conf">
Chilex Argentina
</div>
<div class = "targetHour"> 08:00 pm </div>
</div>
</div>'''

soup = BeautifulSoup(data, 'lxml')

for match, hour in zip( soup.select('div.conf'), soup.select('div.targetHour') ):
    print(match.text.strip(), hour.text.strip())

印刷品:

Brazil vs. Colombia 08:00 pm
Chilex Argentina 08:00 pm

相关问题 更多 >

    热门问题