通过网易云歌单链接下载网易云歌曲
系统开发环境
操作系统:windows 10
Python版本:Python3.x
开发工具:pycharm 2019.2
所需模块:os,requests, lxml(请确认pycharm上是否有安装否则导入会报错)
难度系数:⭐⭐
一、先上图(最终效果)
说明:可见即可爬,暂时只能爬取已经显示的歌曲列表,后面知道怎么爬取全部歌曲有时间会更新或者另写一篇。
二、需要理解的知识点
-
通过F12或者右键检查调出开发者工具,查看Network找到播放列表请求链接,找到播放列表链接和歌单链接之间的规律
如图可以看到他们之间的规律为https://music.163.com/playlist?id=歌单链接最后的id,即"https://music.163.com/playlist?id=%s" % 歌单id
代码:
import requests from lxml import etree # 歌单地址和播放列表地址不一样,所以需要一些处理 str = input(r"请输入要下载的歌单链接:") print() # 获取歌单最后面的id id = str.split("=")[-1] # playlist中的请求地址 url = "https://music.163.com/playlist?id=%s" % id # 伪装头部信息爬取当前网页全部内容 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"}
-
获取网易云歌曲链接和歌曲名
查看url
查看歌曲id
复制id到编译工具查找对应的标签
查找对应的标签方便提取(这里应该是在Pycharm上查看比较好,content中能打印出来的就能解析出来,有的网站做了反爬会根据你的Hearders和ip决定给你展示多少内容,有些内容并不会给你展示而你是根据网页中的Elements解析的内容,你就获取不到你解析中想要的内容)
根据标签提取name和url
代码:def get_content(url): # 1.请求要抓取的网站--获取网站返回的数据 html = requests.get(url, headers=headers