鉴于某云某狗某q好的音乐都要收费,于是冲浪找了一个可以免费下载音乐的网站(说是免费,某些禁歌也需要钱,不过一般的都有,接下来我就通过这个网站,演示一下怎么通过selenium webdriver下载歌曲)

一、准备材料

  • 1.python
    2.pycharm编辑器(支持python的编辑器都可)
    3.selenium
    4.Chromedriver(下载当前浏览器的对应版本,放到python安装主目录文件夹里面)
    5.被爬取的网站一个
    6.一个歌曲单子txt

二、我的准备工作(可参考)

  • 1.python版本以及chromedriver的存放地址

  • 2.Chromedriver的下载地址:http://npm.taobao.org/mirrors/chromedriver/
    3.查看google的版本:浏览器右上角-帮助-关于浏览器,查看版本,下载对应的即可
    4.被爬取的网站:“http://www.fangpi.net/”
    5.一个txt文档,里面的歌曲和歌手用英文字符的,隔开

三、开整

# coding = utf8
import selenium
import requests
import time
'''如果出现:SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 85
解决:
pip install webdriver-manager
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
'''
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManagerimport logging
logging.basicConfig(level=logging.INFO,format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')*写一个主体方法,需要传入的参数有url和需要下载的歌曲的list,list是一个处理后的列表*
def get_music(url,get_music_list):#防止浏览器自动关闭global driver# driver = webdriver.Chrome(executable_path='D:\python\chromedriver.exe')driver = webdriver.Chrome(ChromeDriverManager().install())# driver = webdriver.Chrome(executable_path="E:\Python3.9.0\chromedriver.exe")print(get_music_list)#循环列表中的元素(元素包含列表:歌曲和歌手)for i in get_music_list:#[['句号', 'G.E.M.邓紫棋'], ['孤独', 'G.E.M.邓紫棋']]#i[0]是歌曲名字,i[1]是歌手logging.info("开始搜索下载" + i[0])driver.get(url)time.sleep(2)driver.find_element_by_id("s-input").send_keys(i[0])time.sleep(0.5)driver.find_element_by_id("s-btn").click()time.sleep(2)singer = driver.find_element_by_xpath("/html/body/div[1]/div[1]/div/div/table/tbody/tr[1]/td[2]").textprint(singer)if singer == i[1]:driver.find_element_by_xpath("/html/body/div[1]/div[1]/div/div/table/tbody/tr[1]/td[1]/a").click()time.sleep(2)# 这一步会打开新窗口driver.find_element_by_id("btn-download-mp3").click()time.sleep(3)# 获取浏览器句柄windowstabs = driver.window_handlesprint(windowstabs)# 如果下载歌曲打不开说明是收费的,就没有新窗口,长度就为1if len(windowstabs) ==2:# 获取当前浏览器的窗口的句柄currenttab = driver.current_window_handleprint(currenttab)# 切换到新窗口driver.switch_to.window(windowstabs[1])# 获取当前选项卡urlhref_value = driver.current_url#使用requests去访问地址,进行一个下载response_value=requests.get(href_value)music_name = "E:\Python_study\音乐下载" + '\\' + i[0] + ".mp3"print(music_name)with open(music_name,"wb") as m:m.write(response_value.content)m.close()time.sleep(1)#关闭当前下载窗口driver.close()# 获取浏览器句柄windowstabs = driver.window_handlesprint(windowstabs)# 进入第一个句柄,因为之前关掉了一个窗口,浏览器失去焦点需要重新定位driver.switch_to.window(windowstabs[0])time.sleep(2)else:print("没打开新页面,这歌要钱:" + i[0])else:print("这首歌没有找到:" + i[0])pass#下载完了关闭整个浏览器driver.close()def open_list():music_all = []# 打开文件with open("music_list.txt","r",encoding='utf8') as r:# 循环每一行,获取每一个去除回车,每一个元素用逗号划分for line in r.readlines():lines = line.replace("\n", "").split(",")# 写入列表music_all.append(lines)print(music_all)return music_allif __name__ == '__main__':url="http://www.fangpi.net/"get_music_list = open_list()get_music(url,get_music_list)

四、运行后截图


五、over

seleinum+requets 下载歌曲相关推荐

  1. Python爬虫抓取某音乐网站MP3(下载歌曲、存入Sqlite)

    Python爬虫抓取某音乐网站MP3(下载歌曲.存入Sqlite) 最近右胳膊受伤,打了石膏在家休息.为了实现之前的想法,就用左手打字.写代码,查资料完成了这个资源小爬虫.网页爬虫, 最主要的是协议分 ...

  2. 优秀开源音乐项目---落雪音乐软件(免费听歌下载歌曲)

    最近在学习Electron的时候在github上看到了一个开源的项目(是一个音乐分享软件).(重点是大家要经常逛github,上边有很多很好的开源项目,gitee也是类似)下载下来后使用了效果很好,希 ...

  3. python免费下载歌曲_实现python批量下载网易云音乐的免费音乐

    python视频教程栏目介绍实现下载免费音乐 相关免费学习推荐:python视频教程 运行效果 代码# -*- coding:utf-8 -*- import requests, hashlib, s ...

  4. 在网易云音乐网页版上加下载按键进行下载歌曲

    源由 原理 代码解决 思路 Ajax 请求函数 获取 id 和歌名 点击下载 利用 a 标签 利用 audio 标签 更改歌曲名 a 标签的 download 属性 利用 Ajax 请求歌曲内容 利用 ...

  5. python下载歌曲教程视频_实现python批量下载网易云音乐的免费音乐

    python视频教程栏目介绍实现下载免费音乐 运行效果 代码# -*- coding:utf-8 -*- import requests, hashlib, sys, click, re, base6 ...

  6. python 根据网易云歌曲的ID 直接下载歌曲

    特么的,,,上次写了一堆,发现,原来下载网易云的歌曲根本不用这么费劲,,直接用 http://music.163.com/song/media/outer/url?id=这里填歌曲id.mp3 这个U ...

  7. Python从网易云音乐、QQ 音乐、酷狗音乐、虾米音乐等搜索和下载歌曲

    music-dl 从网易云音乐.QQ音乐.酷狗音乐.百度音乐.虾米音乐等搜索和下载歌曲. Search and download music from netease, qq, kugou, baid ...

  8. Python从网易云音乐、QQ 音乐、酷狗音乐等搜索和下载歌曲

    music-dl 从网易云音乐.QQ音乐.酷狗音乐.百度音乐.虾米音乐等搜索和下载歌曲. Search and download music from netease, qq, kugou, baid ...

  9. Python从网易云音乐、QQ 音乐、酷狗音乐等搜索和下载歌曲!

    music-dl 从网易云音乐.QQ音乐.酷狗音乐.百度音乐.虾米音乐等搜索和下载歌曲. Search and download music from netease, qq, kugou, baid ...

  10. Python爬虫——百度+新浪微盘下载歌曲

    本篇分享将讲解如何利用Python爬虫在百度上下载新浪微盘里自己想要的歌手的歌曲,随便你喜欢的歌手! 首先我们先探索一下我们操作的步骤(以下载Westlife的歌曲为例):打开百度,输入"W ...

最新文章

  1. 希尔排序(Shell's Sort)的C语言实现
  2. 【转】解决多文件编译中连接错误 multiple definition of*****
  3. 磁铁还能用来爬铁墙?简直惊呆了
  4. 腾讯云与阿里云竞争激烈:销售团队积极争取每一笔交易
  5. 洛谷 P2121 拆地毯
  6. java获取文件目录列表_获取目录中的文件列表
  7. Oracle 11g R1(11.1) Joins表连接
  8. java数字与大写字母转化_数字 和 大小写字母之间的转换 10进制和26进制之间的转换...
  9. 云服务器搭建Hadoop集群
  10. Ucenter实现多个网站同步登录
  11. 3D点云深度学习综述
  12. 项目开发日记:陀螺仪的零漂现象
  13. Gerber 格式详解
  14. 计算机网络 路由选择,路由选择
  15. CentOS 7 源码编译安装 Nginx
  16. #bzoj2240#积木游戏(DP? 贪心?)
  17. 转行智能控制的这些年(月无声智控事业部的前世今生)
  18. 目标定位算法(二)之基于测距的定位算法
  19. 解析S2B2C模式的典型特征,应用S2B2C商城助力医疗器械企业快速发展
  20. 卡尔曼滤波与组合导航原理_无人机机载导航系统和传感器基本原理

热门文章

  1. 编程中的概念理解-回调和eTS开发语言
  2. 网站常用JSON嵌套形式
  3. SEO博客外链怎么做?现在的话是注重站内内容还是什么?
  4. 在线pdf转换成word文档的方法
  5. python3.8.2 安装 win7下安装
  6. OSChina 周日乱弹 ——愿你在天堂也能写代码
  7. 网安学习——信息收集
  8. EXCEL单元格内怎么换行?Alt+Enter
  9. 英语思维导图大全 基础语法(二)
  10. ad怎么查接线_Altium怎么进行线路的开路检查?