首先展示下成果


过程中使用到的知识:selenium,request,正则表达式,

# author:浸
# time:2021/1/31 10:07
# file:WyyMusic.py
# use:通过输入歌曲名称显示一系列搜索结果,选择下载歌曲
#通过api接口来下载歌曲:http://music.163.com/song/media/outer/url?id={}
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
import requests
import time
import reclass Spider():def __init__(self):self.path="D://音乐//"#这里是歌曲的apiself.download_api='http://music.163.com/song/media/outer/url?id='self.head={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36'}#存放查找后歌曲信息的列表self.message=[]self.count=0def __get_data(self):#设置selenium无头模式Chrome_options = Options()Chrome_options.add_argument('--headless')Chrome_options.add_argument('--disable-gpu')bro = webdriver.Chrome(options=Chrome_options)#通过url请求搜索结果bro.get(self.url)bro.switch_to.frame('contentFrame')#网页渲染后源码存放搜索结果匹配的歌曲的一系列信息的classmusic_list=bro.find_elements_by_class_name('srchsongst')[0]#获取每一个歌曲的信息music_list=music_list.find_elements_by_xpath('./div')print('-------------"%s" 的查找结果如下------------')for m in music_list:#每一个歌曲都有自己专属的id,api+id就是歌曲下载地址id=re.findall('.*?id=(.*?)$',m.find_element_by_xpath('./div[2]/div/div/a').get_attribute('href'))[0]download_url=self.download_api+id#歌曲名music_name=m.find_element_by_xpath('./div[2]/div/div/a/b').get_attribute('title')#歌手名music_author=m.find_element_by_xpath('./div[4]/div/a').text#每一个歌曲信息做成一个字典data={"name":music_name,'author':music_author,"url":download_url}self.count+=1self.message.append(data)print('%d  《%s》 %s' %(self.count,music_name,music_author))print('--------------------------------------------')def __download(self,i):name=self.message[i-1]["name"]author=self.message[i-1]["author"]url = self.message[i - 1]["url"]data=requests.get(url,headers=self.head).contentwith open(self.path+f'{name} {author}'+".mp3","wb") as file:file.write(data)file.close()print(f'歌曲下载成功!')def pc(self,key):self.key=keyself.url=f'https://music.163.com/#/search/m/?s={str(key)}&type=1'self.__get_data()choose=input("输入要下载歌曲的序号:")self.__download(int(choose))if __name__=="__main__":wyy=Spider()music_name=input("请输入要搜索的歌曲名称:")wyy.pc(music_name)

爬虫搜索并下载网易云歌曲相关推荐

  1. python 爬虫爬取下载网易云音乐歌单的歌曲(需要使用JS的加密方法得出params去获取下载地址)

    要点:1.js加密就是麻烦,只能百度寻找了!设计的加密模块binascii.Crypto.base64 2.requests.Session的用法,可以指定headers.cookies 3.可以用s ...

  2. Python下载网易云歌曲(版权限制的怎么播放和下载呢?) 1

    为什么要这样下载 网易云音乐,我相信大多数人都用过,我个人觉得非常好用,也一直在用,有的时候,我们搜索一些网易歌曲,发现播放不了,甚至下载不了,因为提示"版权方要求,当前歌曲仅限开通音乐包使 ...

  3. 基于Python3爬取并下载网易云歌曲!

    引子:记得高中的时候,一位同桌是五月天的超级粉丝,一下课就大声哼唱(丝毫不在意旁边人的感受,哈哈),刚开始还挺烦的(我下课要赶紧补觉),后来也就慢慢的习惯了,以至于五月天的歌曲成为了记忆中青涩而又躁动 ...

  4. 不登录,不用任何技术,一分钟下载网易云音乐

    最近在写 Python 爬虫,想爬取网易云的歌曲并下载或者保存 Url 到 MongoDB,发现了一个可以快速下载网易云歌曲的方式,不需要登录,也不需要什么技术,简单几步就可以网易云上的音乐. 因此分 ...

  5. python代码示例下载-Python下载网易云歌单歌曲的示例代码

    今天写了个下载脚本,记录一下 效果: 直接上代码: # 网易云 根据歌单链接下载MP3歌曲 import requests from bs4 import BeautifulSoup def main ...

  6. 零基础也能看懂python_零基础也能看懂的Python下载网易云音乐爬虫

    Python Selenium(配置方法参照:Selenium配置) Chrome浏览器(其它的也可以,需要进行相应的修改) 解析 以前抓取过网易云网页的朋友可能都清楚网易云有反爬虫策略的,post时 ...

  7. Python3批量下载网易云音乐热歌榜

    Python3批量下载网易云音乐热歌榜 可以批量下载网易云音乐热歌榜的歌曲,可以自己设定数量,速度非常快. https://music.163.com/#/discover/toplist?id=37 ...

  8. python爬取并下载代码_python 爬取并批量下载网易云歌单源代码

    #!/usr/bin/env python#!--*--coding:utf-8 --*-- #![url=home.php?mod=space&uid=238618]@Time[/url]  ...

  9. 如何下载网易云音乐APP里的MV和短视频?

    本人:网易云音乐死粉,朋友圈大多都用的是云音乐,因为推荐功能牛逼 然后:发现云音乐APP里越来越多吸引我的短视频,经常看到好的就想保存到相册,然后微信发给朋友 但是:不知道怎么下载网易云音乐的短视频, ...

最新文章

  1. Mac下的Docker及Kubernetes(k8s)本地环境搭建与应用部署、管理界面kubernetes-dashboard
  2. 随机效应估算与固定效应估算_【机器学习】随机生存森林
  3. 【Deep Learning 四】课程一(Neural Networks and Deep Learning),第三周(Shallow neural networks)答案
  4. 在阿里云上创建带gpu的ecs实例
  5. Map的keyset() 方法和entrySet() 方法
  6. Discussion: 神经网络neural network与计量经济学模型econometric model比较
  7. Win10系统重装教程(纯净版)
  8. 网络编程学习之经典书籍推荐
  9. O2O商业模式的现状以及发展趋势是什么?
  10. 指派问题——匈牙利法
  11. vue鼠标悬停更改图片
  12. 再谈中断机制(APIC)
  13. 一个仿知乎的问答论坛
  14. 【Vue如何让v-show也有动画效果】
  15. Unity3d 原生录音 Microphone
  16. Android取消选择单选按钮,如何取消选中Android中的单选按钮
  17. 基于51单片机的智能晾衣架
  18. vue-orgchart 导出图片功能备注
  19. 图床/图片服务器项目详细设计
  20. 可转债券、质押式回购、买断式回购

热门文章

  1. 二叉排序树实现英文文章单词统计
  2. 学生积分管理系统改进-python
  3. 想成为硬件工程师,难不?
  4. 详解python使用金山词霸的翻译功能(调试工具断点的使用)
  5. 基于FFmpeg的视频播放器之十二:seek
  6. bzoj1937: [Shoi2004]Mst 最小生成树
  7. 书单推荐|书籍是人类的良师益友
  8. matlab图像配准之SSD、NCC、SAD等相似度计算
  9. Windows 10版本business_editions和consumer_editions的区别
  10. python爬虫遇到 ‘NoneType‘ object has no attribute ‘find_all‘ 问题