Извлечение html текста между элементами
Итак, я хочу соскрести альбомы и песни с этого сайта с красивым супом. HTML выглядит следующим образом:
<div id="listAlbum">
<a id="19215"></a>
<div class="album">
"album: "
<b>"3 Feet High And Rising"</b> == $0
" (1989)"
</div>
<a href="https://www.azlyrics.com/lyrics/delasoul/intro.html" target="_blank">Intro
</a>
<br>
<a href="https://www.azlyrics.com/lyrics/delasoul/themagicnumber.html" target="_blank">The Magic Number</a>
<br>
<a href="https://www.azlyrics.com/lyrics/delasoul/changeinspeak.html" target="_blank">Change In Speak</a>
<br>
Я хочу извлечь это: Альбом: 3 Фута Высотой И Поднимающийся Песни: Вступление, Магическое Число, Изменение В Разговоре
Я получил альбомы с этим:
allAlbums = soup.findAll('div', {"class" : "album"})
for a in allAlbums:
albumName = str(a.text)[7:]
print('album: ' + str(a))
Я не могу понять, как получить песни. Я пробовал их:
for s in soup(text = re.compile(r'target="_blank">')):
print(s.parent)
Есть идеи?
2 ответа:
Попробуйте это. Я надеюсь, что это принесет вам необходимый результат:
from bs4 import BeautifulSoup html_content=''' <div id="listAlbum"> <a id="19215"> </a> <div class="album"> "album: " <b> "3 Feet High And Rising" </b> == $0 " (1989)" </div> <a href="https://www.azlyrics.com/lyrics/delasoul/intro.html" target="_blank"> Intro </a> <br/> <a href="https://www.azlyrics.com/lyrics/delasoul/themagicnumber.html" target="_blank"> The Magic Number </a> <br/> <a href="https://www.azlyrics.com/lyrics/delasoul/changeinspeak.html" target="_blank"> Change In Speak </a> <br/> </div> ''' soup = BeautifulSoup(html_content,"lxml") for item in soup.select("#listAlbum .album,#listAlbum a"): print(item.text.strip())
Что она производит:
"album: " "3 Feet High And Rising" == $0 " (1989)" Intro The Magic Number Change In Speak