大佬教程收集整理的这篇文章主要介绍了用beautifulsoup刮歌词,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
使用 Genius API,我获得了歌词页面的歌曲 url。我现在想使用 beautifulsoup4
对此进行网络抓取;但是,我遇到了错误。代码如下:
from bs4 import BeautifulSoup
import requests
def scrap_song_url(url):
page = requests.get(url)
HTML = BeautifulSoup(page.text,'HTMl.parser')
lyrics = HTMl.find('div',class_='lyrics').get_text()
return lyrics
在这里,我正在查看歌词页面的 HTML。例如,请查看此特定网址:https://genius.com/Acceptance-pe@R_674_11065@ent-lyrics
。仔细研究 HTML,似乎歌词包含在 div
下,类为 'lyrics'
但是,尝试使用 HTMl.find
查找它会返回一个 nonetype
对象,因此 .get_text()
会引发错误。我认为这意味着由于某种原因,没有找到 HTML 标签(或者不管你怎么称呼它,我真的不知道 HTML)。如何从给定的歌词 url 中获取 div 类 'lyrics'
的歌词?
有一个 Genius API Python 包装器受支持并且看起来很酷:LyricsGenius。你应该试试看。使用 pip 可以轻松安装:pip install lyricsgenius
从它的文档来看,收集歌词看起来容易多了:
from lyricsgenius import Genius
genius = Genius(token)
genius.search_artist('@R_489_10430@ Shauf')
artist.save_lyrics()
,
呃,我不认为那是歌词所在的地方。使用该特定页面,我做到了:
@H_772_6@lyrics = html.SELEct("div[class*=Lyrics__Container]")
并得到了歌词(在那里混合了一堆其他 HTMl)。有很多清洁工作要做。 '*' 使您可以获得所有以 Lyrics__Container 开头的类,因为后面有一串数字和字母,我认为可能会改变。
,首先使用 Stripped_Strings 选择器分离出诗句/副歌部分后,您可以使用 attribute 挑选出单独的台词。语法的外部有一些列表取消嵌套。
@H_772_6@import requests
from bs4 import BeautifulSoup as bs
from pprint import pprint
r = requests.get('https://genius.com/Acceptance-pe@R_674_11065@ent-lyrics')
soup = bs(r.content,'lxml')
pprint([i for j in [[line for line in verse.Stripped_Strings] for verse in soup.SELEct('[data-scrolltrigger-pin]')] for i in j])
# pprint('\n'.join([i for j in [[line for line in verse.Stripped_Strings] for verse in soup.SELEct('[data-scrolltrigger-pin]')] for i in j]))
以上是大佬教程为你收集整理的用beautifulsoup刮歌词全部内容,希望文章能够帮你解决用beautifulsoup刮歌词所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。