python网易云热歌榜歌曲信息爬取(iframe框架内数据爬取,src为空)

该博客介绍了如何在Python环境下爬取网易云音乐热歌榜的数据,特别是处理iframe框架内数据爬取的问题,src为空的情况。博主优化了歌曲时长和多歌手抓取的代码,通过分析网络请求找到实际数据来源,从json格式的textarea中提取信息,最终将结果写入文件。
摘要由CSDN通过智能技术生成

为一线医护人员加油! 为武汉加油! 为中国加油! 为世界加油!
此爬虫是本人参考了了一位前辈的文章,并修改和优化了代码:
1.改为python3环境;
2.优化了抓取的歌曲时长中带一长串小数的问题;
3.优化了当作者为多个歌手时只能抓取一个歌手的问题;
环境:Ubuntu18.04、Python3.6.9、Google Chrome

python爬取网易云热歌榜歌曲信息(iframe框架内数据爬取,src为空)

思路分析

一、网易云热歌榜https://music.163.com/#/discover/toplist?id=3778678页面是采用嵌入内联框架的方式,若直接访问页面是访问不到iframe框架中歌曲信息数据的,也可用比较简单的方法selenium+chrome等工具进行实现。

二、内嵌的框架实际也是一个网页资源,我们找到它的链接,然后获取这一页面,就可以从中取数据。

需求分析

获取热歌榜上排名,歌名,时长,歌手,专辑,发行时间,其它备注信息
输出到icloud.log文件中

分析页面

打开chrome开发工具,打开热歌榜页面找到iframe元素,发现src为空,可以发现iframe中的内容是js生成的
iframe元素
因此,分析我们需要的api找到所需链接。选择Network,选择Doc,然后重新加载发现有两个文件。
分别在两个文件的response中CTRL+F搜索榜单上的 任意一首歌,发现在第二个文件中
冬眠
右键这个文件选择copy/copy link address获取内嵌框架的链接。
用此链接另外打开一个页面后发现又跳回原来的页面,因此我们在原来的网页中的歌曲信息的地方右击查看框架的源代码,然后CTRL+F搜索后发现歌曲信息数据是以json的格式存在textarea标签下
在这里插入图片描述
使用json在线格式化网站分析这些json数据
json格式化
获取成功
代码如下:

'''
网易云音乐热歌榜歌曲信息爬取
https://music.163.com/#/discover/toplist?id=377867
beautifulsoup的使用
环境python3.6.9
'''
import json
import sys
import time

import requests
from bs4 import BeautifulSoup

headers = {
   'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}

def get_info(url):
    response = requests.get(url=url,headers=headers)
    
  • 9
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值