BeautifulSoup, чтобы получить «span» содержимое рядом друг с другом - PullRequest
0 голосов
/ 10 марта 2020

Часть HTML выглядит следующим образом. Я хочу извлечь содержимое из тегов 'span':

from bs4 import BeautifulSoup
data = """
<section><h2>Team</h2><ul><li><ul><li><span>J36</span>—<span>John</span></li><li><span>B56</span>—<span>Bratt</span></li><li><span>K3</span>—<span>Kate</span></li></ul></li></ul></section>
... """
soup = BeautifulSoup(data, "html.parser")

classification = soup.find_all('section')[0].find_all('span')

for c in classification:
    print (c.text)

Получается:

J36
John
B56
Bratt
K3
Kate

Но требуется:

J36-John
B56-Bratt
K3-Kate

Что такое Правильный ли BeautifulSoup способ извлечь содержимое, кроме указанного ниже? Спасибо.

contents = [c.text for c in classification]

l = contents[0::2]
ll = contents[1::2]

for a in zip(l, ll):
    print ('-'.join(a))

1 Ответ

1 голос
/ 10 марта 2020

Вы можете получить следующий тег родного брата. Если это da sh, он будет напечатан вместе с текстом, в противном случае будет напечатан только текст.

for c in classification:
    if c.next_sibling:
        print(c.text + str(c.next_sibling), end='')
    else:
        print(c.text)
...