python - 从以特定模式命名的 div 标签获取文本
问题描述
我制作了一个应用程序来搜索 Spotify 上歌曲的歌词。该应用程序从 Genius.com 获取所有歌词。问题是他们已经改变了他们的网站,现在包含所有歌词的 div 标签被命名为一个奇怪的名字......最近,它被命名lyrics
但现在它是这样的:Lyrics__Container-sc-1ynbvzw-2 jgQsqn
我猜每个 div 标签都包含“Lyrics__Container " 关键字和它后面的字母只是改变了。我获取歌词的线路如下所示:
page = requests.get(url)
html = BeautifulSoup(page.text, 'html.parser')
lyrics = html.find('div', class_='lyrics').get_text()
有没有办法通过知道它以“Lyrics__Container”开头来从 div 标签中获取文本?
解决方案
使用正则表达式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()
推荐阅读
- swift - 不推荐使用自动配置会话?
- join - SQL TERADATA:我希望根据日期的重复计数创建一个列。没有减少输出行
- .net - linux 上的 Mono:找不到元数据文件“/mscorlib.dll”
- javascript - 查询参数包括#, Javascript (Node) 错误输出
- shell - 通过 sh 脚本运行 xdtool 命令时锁定键盘和鼠标
- azure - 在 Azure AD B2C 中注册后如何让用户返回登录页面?
- bash - Shell 脚本 - 无法将随机值分配给变量
- apache-kafka - kafka消费者轮询多次不返回所有数据
- python - 网络抓取不同的 URL - 限制
- ios - Alamofire 网络错误异常处理