如何从歌曲歌词 url 列表中抓取歌词?

时间:2021-06-15 19:57:34

标签: python web-scraping

目前我在 python 中有一个名为“urls”的 500 个 url 列表,这些 url 导致歌词,我想知道如何从相应的 url 中抓取每首歌曲的歌词。我假设我必须用 BeautifulSoup 创建一个 for 循环,但我不确定如何处理它。下面显示了我如何从 csv 中获取 url 列表。

path = os.path.join('c:' + os.sep, 'Users', '....', 'Downloads', 'dataset_6.csv')
   data = pd.read_csv(path, header = 0)
   data.columns = data.columns.str.replace(' ', '')
   urls = list(data.lyricsurl)
   print(urls)

这是列表中的第一项以及其他所有 url 的样子:

['https://www.azlyrics.com/lyrics/natkingcole/sweetlorraine.html', '...', '...']

这是html文档中歌词所属的类

class="col-xs-12 col-lg-8 text-center"

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

此示例将遍历列表中的所有网址并打印歌词:

import requests
from bs4 import BeautifulSoup


urls = [
    "https://www.azlyrics.com/lyrics/natkingcole/sweetlorraine.html",
    # ...more urls
]

for url in urls:
    soup = BeautifulSoup(requests.get(url).content, "html.parser")
    lyric = soup.select_one(".ringtone ~ div").get_text(
        strip=True, separator="\n"
    )

    print(lyric)

打印:

Just found joy
I'm as happy as a baby boy, baby boy
With another brand new choo-choo choy
When I met my sweet Lorraine, Lorraine, Lorraine.

...and so on.