我正在嘗試使用 python 包 BeautifulSoup 從這個 url 中檢索最受歡迎的歌曲。當我用藝術家姓名抓取跨度時,它會抓取正確的跨度,但是當我在跨度上呼叫“.text”時,它不會抓取跨度標簽之間的文本。
這是我的代碼:
import requests
from bs4 import BeautifulSoup
r = requests.get('https://www.billboard.com/charts/hot-100/')
soup = BeautifulSoup(r.content, 'html.parser')
result = soup.find_all('div', class_='o-chart-results-list-row-container')
for res in result:
songName = res.find('h3').text.strip()
artist = res.find('span',class_='c-label a-no-trucate a-font-primary-s lrv-u-font-size-14@mobile-max u-line-height-normal@mobile-max u-letter-spacing-0021 lrv-u-display-block a-truncate-ellipsis-2line u-max-width-330 u-max-width-230@tablet-only').text
print("song: " songName)
print("artist: " str(artist))
print("___________________________________________________")
目前每首歌曲列印以下內容:
song: Waiting On A Miracle
artist: <span class="c-label a-no-trucate a-font-primary-s lrv-u-font-size-14@mobile-max u-line-height-normal@mobile-max u-letter-spacing-0021 lrv-u-display-block a-truncate-ellipsis-2line u-max-width-330 u-max-width-230@tablet-only">
Stephanie Beatriz
</span>
___________________________________________________
我如何只提取藝術家的名字?
uj5u.com熱心網友回復:
如果班上只有一個字符,它不會抓住它。我只是通過獲得歌曲名稱來簡化它,藝術家在下一個<span>標簽中跟隨。<h3>所以像你為歌曲做的那樣得到那個標簽,然后.find_next()用來得到藝術家:
import requests
from bs4 import BeautifulSoup
r = requests.get('https://www.billboard.com/charts/hot-100/')
soup = BeautifulSoup(r.content, 'html.parser')
result = soup.find_all('div', class_='o-chart-results-list-row-container')
for res in result:
songName = res.find('h3').text.strip()
artist = res.find('h3').find_next('span').text.strip()
print("song: " songName)
print("artist: " str(artist))
print("___________________________________________________")
輸出:
song: Heat Waves
artist: Glass Animals
___________________________________________________
song: Stay
artist: The Kid LAROI & Justin Bieber
___________________________________________________
song: Super Gremlin
artist: Kodak Black
___________________________________________________
song: abcdefu
artist: GAYLE
___________________________________________________
song: Ghost
artist: Justin Bieber
___________________________________________________
song: We Don't Talk About Bruno
artist: Carolina Gaitan, Mauro Castillo, Adassa, Rhenzy Feliz, Diane Guerrero, Stephanie Beatriz & Encanto Cast
___________________________________________________
song: Enemy
artist: Imagine Dragons X JID
___________________________________________________
....
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/455045.html
