程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了用beautifulsoup刮歌词大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决用beautifulsoup刮歌词?

开发过程中遇到用beautifulsoup刮歌词的问题如何解决?下面主要结合日常开发的经验,给出你关于用beautifulsoup刮歌词的解决方法建议,希望对你解决用beautifulsoup刮歌词有所启发或帮助;

使用 Genius API,我获得了歌词页面的歌曲 url。我现在想使用 beautifulsoup4 对此进行网络抓取;但是,我遇到了错误。代码如下:

@H_772_6@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'

用beautifulsoup刮歌词

但是,尝试使用 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__C​​ontainer 开头的类,因为后面有一串数字和字母,我认为可能会改变。

,

首先使用 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,请注明来意。