首页 > 解决方案 > 从以特定模式命名的 div 标签获取文本

问题描述

我制作了一个应用程序来搜索 Spotify 上歌曲的歌词。该应用程序从 Genius.com 获取所有歌词。问题是他们已经改变了他们的网站,现在包含所有歌词的 div 标签被命名为一个奇怪的名字......最近,它被命名lyrics但现在它是这样的:Lyrics__Container-sc-1ynbvzw-2 jgQsqn我猜每个 div 标签都包含“Lyrics__C​​ontainer " 关键字和它后面的字母只是改变了。我获取歌词的线路如下所示:

page = requests.get(url)
html = BeautifulSoup(page.text, 'html.parser')
lyrics = html.find('div', class_='lyrics').get_text()

有没有办法通过知道它以“Lyrics__C​​ontainer”开头来从 div 标签中获取文本?

标签: pythonhtmlpython-3.xbeautifulsoup

解决方案


使用正则表达式class_

“与任何关键字参数一样,您可以传递 class_ 字符串、正则表达式、函数或 True:” https://www.crummy.com/software/BeautifulSoup/bs4/doc/#searching-by-css-班级

前任:

import re

lyrics = html.find('div', class_=re.compile(r'^Lyrics__Container')).get_text()

推荐阅读