爬取酷狗歌曲并进行下载用的是selenuim
爬取酷狗歌曲并进行下载用的是selenuim
1. 请求的url并发起请求
2. 定位元素,循环遍历
3. 窗口的转移
4. 获取歌曲的下载路径
5. 保存到指定的文件里面
6. 总结
开始来看看吧
首先大家还是先导一下包吧,也就那几个好吧:
不会导包的看下我写的这篇哟https://blog.csdn.net/XY52wiue/article/details/112975003
import requests
from selenium.webdriver import Chrome,ChromeOptions
import os
import time
一:请求的url并发起请求
我这里直接到音乐里面,这里不涉及登录,可以不用想那么多,哈哈哈哈。
url = 'https://www.kugou.com/yy/rank/home/1-8888.html?from=homepage'
进行伪装:
headers = {"User_Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36"}
发起请求,并且以utf-8的格式进行读取数据:
如果有看不懂的,可以看下我前面几篇文章:
response = requests.get(url=url,headers=headers)#手动设定响应数据的编码格式response.encoding = 'utf-8'page_text = response.text#这个就是再后台上面运行那个浏览器,不在表面上占用你的option = ChromeOptions()option.add_argument('--headless')option.add_argument("--no-sandbox")option.add_experimental_option('excludeSwitches',['enable-automation'])#这里也要输入browser = Chrome(options=option)browser.get(url)
二:定位元素,并进行循环遍历 到了这一步可是重点了
可以看到上图,大家按着顺序走就行,按住crtl+f 出现那个框框,把copy-xpath粘贴s上去,看到是1 of 1 ,这很正常,我们所定位的只有一个元素,要把一页的数据搜索出来很简单,把li[1]的[1]去掉就像了,【中括号也要一起去掉】
下面看下代码:
n = 1 #为后面切换窗口循环做准备#把要取的类名统统取出来,找到他,注意是elements,所以不止是一个li_list = browser.find_elements_by_xpath('//*[@id="rankWrap"]/div[2]/ul/li')for li in li_list:browser.switch_to.window(browser.window_handles[-1])#歌曲名字li_name = li.find_element_by_xpath('./a').get_attribute('title')#歌曲的urlli_url = li.find_element_by_xpath('./a').get_attribute('href')#进行测试一下,是否走到这一步print(li_name, li_url)#点击标题,跳转# 把要取的类名统统取出来,找到他,注意是elements,所以不止是一个alist = browser.find_elements_by_class_name('pc_temp_songname')# 因为我们要对这个名字点击事件,循环他,在进行点击for a in alist:a.click()browser.switch_to.window(browser.window_handles[-1])time.sleep(1)#歌曲的下载路径song = browser.find_element_by_xpath('//*[@id="myAudio"]').get_attribute('src')#歌曲的名称song_name = browser.find_element_by_xpath('/html/body/div[1]/div[3]/div[1]/div[2]/div[1]/span').get_attribute('title')# print(song)
对于上述注释不理解的可以评论区问哟
三、窗口的转移
browser.switch_to.window(browser.window_handles[-1])
#关闭这些窗口
browser.close()
#切换上一个窗口
browser.switch_to.window(browser.window_handles[0])
#进行下一个点击事件
n += 1
四:获取下载的路径
对于新打开的窗口进行获取下载连接MP3:
找到flash播放插件就可以进行下载:【注意一下,这里如果有窗口弹出来的话不用进行理会,我们不需要点击什么,只是要一个元素而已,所以不管。】
五、保存到指定的文件里面:
#创建歌曲的文件if not os.path.exists('./音乐'):os.mkdir('./音乐')#对新的发起一个请求song_data = requests.get(url=song, headers=headers).contentsong_path = '音乐/' + song_name#新进去with open(song_path, 'wb') as fp:fp.write(song_data)print(song_name, '下载成功!!!')
这里也与我前面几篇文章一样就行。
最后进行播放:
from pygame import mixer
import time
#进行初始化
mixer.init()
#获取路径
mixer.music.load('E:\python\program1\抓包\音乐\ 星辰大海')
#播放
mixer.music.play()
#播放的时间有多久
time.sleep(1000)
#关闭
mixer.music.stop()
六:总结
这次抓取的时候有个弹窗问题一直困扰我,就是点进歌曲里面要弹出窗口,第一次会出现,但后面再次进入就不会,网上找了很多,没咋个判断出来,希望会的小伙伴在评论区告知一下下。好了,随便下载歌曲都可以了。
结果如下:
点个赞把,亲
爬取酷狗歌曲并进行下载用的是selenuim相关推荐
- Python爬虫之爬取酷狗音乐歌曲
Python爬虫之爬取酷狗音乐歌曲 1.安装第三方库 在Python的语言库中, 分为Python标准库和Python的第三方库. Python标准库是在你安装Python的时候已经包含在了安装目录下 ...
- Java爬虫系列之实战:爬取酷狗音乐网 TOP500 的歌曲(附源码)
在前面分享的两篇随笔中分别介绍了HttpClient和Jsoup以及简单的代码案例: Java爬虫系列二:使用HttpClient抓取页面HTML Java爬虫系列三:使用Jsoup解析HTML 今天 ...
- Python爬虫入门——2. 2爬取酷狗音乐top1-500歌曲信息
有了第一个程序的基础,我们现在来爬取酷狗音乐top500的歌曲信息.连接http://www.kugou.com/yy/rank/home/1-8888.html 我们第一个程序只爬取了一个页面的数据 ...
- Python爬虫案例:爬取酷狗音乐全排行榜歌曲
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 本次目标 爬取酷狗音乐全站排行榜歌曲 目标地址 https://www.ku ...
- python爬取音乐排行_Python爬取酷狗Top500的歌曲!够你吹个小牛皮了吧
一.准备工作 安装 requests 库和 beautifulsoup4 库: requests 库是处理HTTP请求的一个简洁且简单的第三方库:beautifulsoup4 库是一个解析和处理HTM ...
- Python爬取酷狗Top500的歌曲
文章目录 文章目录 文章目录 一.准备工作 二.对网站HTML源码进行分析 三.爬取酷狗Top500的歌曲 一.准备工作 安装 requests 库和 beautifulsoup4 库: pip in ...
- 使用Python爬取酷狗TOP500歌曲
一个简单的Python案例,爬取酷狗TOP500歌曲,仅供学习参考 import requests from bs4 import BeautifulSoup import time# 爬取酷狗TOP ...
- Python爬取酷狗音乐-详解(多图预警)
目录 1.前言 2.分析一下 1. 2. 3. 3.代码解释 4.完整代码 5.结语 1.前言 前面发布了一篇关于QQ音乐爬取的教程,但对于我们这种文艺青年来说,一个平台的歌曲怎么够我们听的,也是因为 ...
- 4步实现Java爬取酷狗音乐,so easy。
jar包:包括:jsoup.HttpClient.net.sf.json大家可以自行去下载 1.分析是否能获得TOP500歌单 首先,打开酷狗首页查看酷狗TOP500, 是真的只让看这些还是能找到其余 ...
最新文章
- centos 6.0 启动失败提示。
- java rpm 安装路径_如何查找rpm方式安装的软件路径
- Powerdesigner 在线打开 不用安装客户端 访问pdm,ldm文件
- Ampere Altra Max 对比测试数据公布,性能能效双领先
- 使用正则表达式实现将浮点数点左边的数每三位添加一个逗号
- 1用switch语句从控制台输入100以内的分数判断优秀,良好,及格不及格属于哪一个区间
- seqkit根据基因id_ID转换靠的是深厚的背景知识加上一点代码技巧
- bagging算法_Bagging与随机森林算法及其变种
- C#窗体应用实战项目——绩效考核管理系统
- bzoj4011落忆枫音
- 根据经纬度查询位置百度api
- 人脸面部情绪识别(一)
- win7远程服务器管理工具
- 2023养老展/山东养老服务业展/济南老年用品展/老龄产业展
- 绿能宝承载的不单是绿能宝的梦想
- mx250是什么_分析mx250显卡什么级别
- 业务系统成功微服务化改造的实施步骤
- Android关于Firebase集成及示例及用法(开发反编译)
- html中列表前面的序号带圆圈,js动态添加带圆圈序号列表方法
- cf体验服老显示与服务器出现异常,穿越火线体验服出现网络异常
热门文章
- 配置 PyCharm for Linux 设置启动图标 pycharm-edu-2021.3.1 Ubuntu 18.04.6 LTS
- ip netns命令详解
- 项目经历怎么写_工程监理简历范文,【工作经历+项目经验+自我评价】怎么写...
- 哔哩哔哩bilibili 直播间全屏发弹幕
- 企业做seo的优势在哪些地方
- springboot文件上传和下载(批量/单个)
- android 如何分析卡顿问题
- html5视频支持qsv吗,视频格式转换神器:qlv、qsv、kux统统一网打尽
- JavaScript之 高性能读书笔记
- 英雄无敌3 Heroes III 里面的英语单词 (转)