python - 如何使用python解析苹果音乐
问题描述
def getLinks():
# Getting links
url = f"https://music.apple.com/ua/playlist/techno-essentials/pl.de1ac365ed3549698bcd6e099db5171d"
response = requests.get(url)
html = response.text
soup = BeautifulSoup(html, 'html.parser')
# applelinks = soup.find_all('meta', attrs = {"property":"music:song"})[0].get("content") #works but only with one link
# file.write(applelinks)
applelinks = soup.find_all('meta', attrs = {"property":"music:song"})
for link in enumerate(applelinks):
file.write(link.get("content")) #Objects has no attribute "get"
return
getLinks()
我正在使用 Beautiful Soup 和 Requests 库。如何获取所有链接?
解决方案
AttributeError: 'tuple' object has no attribute 'get'
这里的问题是变量link
是没有属性的元组get
。以及为什么它是tuple
因为enumerate
与for loop
.
enumerate(applelinks)
这将返回一个enumerate object
可以迭代的。并且每次在for loop
它都会返回一个类似下面tuple
的内容。index
#input
for link in enumerate(applelinks):
print(link)
#output
'index' 'applelinks object member'
V V
(0, <meta content="<link for the song>" property="music:song"/>)
(1, <meta content="<link for the song>" property="music:song"/>)
...
当您index
在迭代时需要对象的成员时,基本上会使用它。如下图,
#input
for index, link in enumerate(applelinks):
print(f'index of element: {index} | link: {link}')
#output
index of the element: 0 | link : <meta content="link for the song" property="music:song"/>
index of the element: 1 | link : <meta content="link for the song" property="music:song"/>
...
由于index
这里不需要,我们可以放弃enumerate
对对象的使用和迭代applelinks
。
#input
for link in applelinks:
print(link.get("content"))
#output
song link
song link
...
注意:歌曲的链接正在编辑,因为它们不是解释所必需的。
推荐阅读
- mysql - 如何根据 REST API 请求中的标头连接到多个 MySQL 数据库
- python - 如何使您的具有 GUI 的代码在 Amazon EC2 实例上运行
- syntax - 如何编写查询以在 RediSearch 中包含和排除标签?
- jquery - 如何在 Ctrl+左键单击时从多选输入中选择一个输入?
- python - 如何分别绘制重复循环的结果?
- c# - 当我尝试从门户发送邮件时出现错误?
- node.js - 如何使用 truffle 框架与 Node 的以太坊智能合约交互?
- python - 如何为 Pandas DataFrame 和其他输出数据列表个性化 Json 输出
- python - 如何使 SQLAlchemy 和 Flask 使用相同的记录器?
- jquery - 链接按钮单击事件未通过 JQUERY 触发