使用python和bs4检索歌词

时间:2018-01-08 21:04:36

标签: python web-scraping beautifulsoup

我试图获取此页歌曲的歌词

https://www.musica.com/letras.asp?letra=1986778

我之前从未使用过bs4所以我不知道如何面对这个问题,我尝试用特定字体查找所有表格,所有段落或所有文本,但我无法让它工作(我我不会写一段能做我想做的事情。

关闭主题:这就是我获取歌曲的网址的方式。

此网址包含该艺术家所有歌曲的列表 https://www.musica.com/letras.asp?letras=22997

我的代码是:

import requests
from bs4 import BeautifulSoup

import re

url = 'https://www.musica.com/letras.asp?letras=22997'
page = requests.get(url)
soup = BeautifulSoup(page.text, 'html.parser')

links = soup.find_all('a')
song_links = [link for x link links if ('>Letras de Massacre' in str(link)) ] 

我认为这不是最优雅的剧本,我在这里遇到了同样的问题,我试图让链接找到包含它们的表格,但经过一些试验和错误后,我注意到所有的歌曲链接都说&# 39;> Letras de Massacre'在他们中间。

感谢您花时间阅读本文!

1 个答案:

答案 0 :(得分:1)

所以你链接的网址有很多其他网址,这就是歌词所在的位置。您需要使用请求来获取每个请求。我用这个作为例子 https://www.musica.com/letras.asp?letra=1103460

现在你可以快速刮掉这样的歌词。

#assuming you already set the url
page = requests.get(url)
soup = BeautifulSoup(page.text, 'html.parser')
lyrics=soup.find_all('p')[0]

这将为您提供一个包含歌词的字符串,以及您需要解析的一些换行符和段落标记。应该很容易做到re或其他什么。