首页 > 解决方案 > Python BeautifulSoup

问题描述

我正在使用 Python BeautifulSoup 从一个著名的歌曲网站中提取一些数据。

这是代码片段:

import requests
from bs4 import BeautifulSoup


url= 'https://gaana.com/playlist/gaana-dj-bollywood-top-50-1'
res = requests.get(url)
while(res.status_code!=200):
    try:
        res = requests.get('url')
    except:
        pass
print (res)
soup = BeautifulSoup(res.text,'lxml')
songs = soup.find_all('meta',{'property':'music:song'})
print (songs[0])

这是示例输出:

<Response [200]>
<meta content="https://gaana.com/song/o-saathi" property="music:song"/>

现在我想将内容中的 url 提取为字符串,以便我可以在我的程序中进一步使用该 url。

有人请帮助我。

标签: python-3.xbeautifulsoup

解决方案


它在评论中,但我只想解释一下:beautifulsoup 将大多数结果作为列表或其他可迭代对象返回。您通过使用歌曲 [0] 在代码中表明您理解这一点,但在这种情况下,返回的是字典。

正如StackOverflow 帖子中所解释的,您不仅需要查询歌曲 [0],还需要查询字典中的属性(两者一起称为密钥对,是从字典中获取数据的主要方式)。

最后一点:虽然我一直是 BeautifulSoup4 的忠实粉丝,但您可以考虑使用 lxml 库。它有很好的记录;要真正利用它,您必须学习 Python 类型的 Xpath,它们有点像 XML/HTML 的正则表达式;但是对于高级抓取,它可能是 Selenium 之外的最后一个最佳选择,并且它返回的数据比 bs4 更干净。

祝你好运!


推荐阅读