python-3.x - 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。
有人请帮助我。
解决方案
它在评论中,但我只想解释一下:beautifulsoup 将大多数结果作为列表或其他可迭代对象返回。您通过使用歌曲 [0] 在代码中表明您理解这一点,但在这种情况下,返回的是字典。
正如StackOverflow 帖子中所解释的,您不仅需要查询歌曲 [0],还需要查询字典中的属性(两者一起称为密钥对,是从字典中获取数据的主要方式)。
最后一点:虽然我一直是 BeautifulSoup4 的忠实粉丝,但您可以考虑使用 lxml 库。它有很好的记录;要真正利用它,您必须学习 Python 类型的 Xpath,它们有点像 XML/HTML 的正则表达式;但是对于高级抓取,它可能是 Selenium 之外的最后一个最佳选择,并且它返回的数据比 bs4 更干净。
祝你好运!
推荐阅读
- python - .exe python 应用程序不能在没有安装 python 的其他机器上运行
- laravel - laravel POST 请求未呈现
- php - 使用 FormRequest 在调度时获取令牌访问权限
- c# - 使用异步任务 ConfigureAwait(true) 时如何不冻结 UI
- android - 如何在 Android Studio 中获取设备市场模型
- git - 通过拉取请求合并本地分支后如何删除它?git-flow、bitbucket、sourcetree
- javascript - 提交的聊天未发布和检索聊天不起作用
- c# - json中的空日期在休息调用中给出错误
- invoice - bill.com 创建有关税收和 itemId 的发票问题
- angular - 从 Angular 方法返回一个 Observable,包括 pipe、switchMap、forkJoin