关于CSGO队友不给听音乐盒,我自己用Python爬虫下载全部音乐盒的这件事
2021/7/21 22:22:15
本文主要是介绍关于CSGO队友不给听音乐盒,我自己用Python爬虫下载全部音乐盒的这件事,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 一、事情的详细经过
- 二、selenium爬取所有资源链接并下载
- 导入selenium库
- 下载浏览器驱动
- 配置环境变量
- 爬取所有链接并下载
- 三、听着音乐盒在沙二RushB
个人博客传送门: |我是门|
一、事情的详细经过
就是有一天我和队友rushB的时候,哎,就发现队友的MVP音乐针不戳。于是,我就让队友多放几次听一听。然而…
敌人:GTMD电竞梦
好吧,并不是队友不想给我听动感的MVP音乐,而是实力不允许(找个班上吧)
我就在网上找CSGO音乐盒的试听网站,一下就让我找到了CSGO官方网站 音乐盒试听。但是,我想把音乐文件保存到本地,就可以在本地听,也可以发给别人。我找啊找啊,找到了这个CSGO音乐盒曲目打包下载试听,还是缺了几个最新的音乐盒。
于是,回到CSGO官方网站 音乐盒试听,然后F12
有了资源链接,就轮到爬虫登场了。
二、selenium爬取所有资源链接并下载
注意到音乐盒试听页面是需要点击试听
按钮才弹出的,并且点击前后,页面链接没有发生变化,所以不能用?music=xxx
的形式获取试听页面。这个时候就需要用到selenium库来模拟用户行为。
selenium:Selenium框架测试直接运行在浏览器中,就像真正的用户在操作一样
导入selenium库
pip install selenium
下载浏览器驱动
Selenium调用浏览器必须有一个webdriver驱动文件
Chrome驱动文件下载:http://npm.taobao.org/mirrors/chromedriver/
Firefox驱动文件下载:https://github.com/mozilla/geckodriver/releases
驱动文件解压后,放到文件夹下,如:
配置环境变量
我的电脑–>属性–>系统设置–>高级–>环境变量–>系统变量–>Path,将驱动文件所在文件夹路径添加到Path的值中。
如:
爬取所有链接并下载
具体过程不写了,总之就是使用F12查看源代码,定位元素,模拟点击,爬取链接,然后用requests下载文件保存
完整代码:
from selenium import webdriver import requests as req import os import time oldtime = time.time() #开始时间 option = webdriver.ChromeOptions() option.add_argument('--headless') #无界面模式 page = webdriver.Chrome(chrome_options=option)# 创建一个webdriver对象 page.get('https://www.csgo.com.cn/data/music_box.html') album = page.find_element_by_id('album') dls = album.find_elements_by_tag_name('dl') if os.path.exists('music')==False: os.mkdir('music') count = 0 for i in range(len(dls)): count += 1 p = dls[i].find_element_by_tag_name('p') p.click() #模拟点击"试听" time.sleep(1) prompt_music = page.find_element_by_id('prompt_music') name_ch = prompt_music.find_element_by_class_name('name_ch') albumName = name_ch.get_attribute('textContent') albumName = albumName.replace(':', '-') albumName = albumName.replace('*', '-') if os.path.exists('music\\'+albumName)==False: os.mkdir('music\\'+albumName) lis = prompt_music.find_elements_by_tag_name('li') print(albumName) print('开始下载...') for j in range(len(lis)): musicName = str(lis[j].get_attribute('textContent')) span = lis[j].find_element_by_tag_name('span') musicSrc = span.get_attribute('musicsrc') down = req.get(musicSrc) fp = open('music\\'+albumName+'\\'+musicName+'.mp3', 'wb') #保存MP3文件到磁盘 for data in down.iter_content(chunk_size=1024): if data: fp.write(data) fp.close() print('...下载完成') close = prompt_music.find_element_by_class_name('close') close.click() #模拟点击"X"关闭 time.sleep(1) newtime = time.time() to = newtime - oldtime print('全部下载完成,共计%d个音乐盒,耗时%.2f秒'%(count, to))
结果:
三、听着音乐盒在沙二RushB
最喜欢的音乐盒:
EZ4ENCE
很遗憾,csdn不能嵌入iframe
这篇关于关于CSGO队友不给听音乐盒,我自己用Python爬虫下载全部音乐盒的这件事的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24Python编程入门指南
- 2024-12-24Python编程基础入门
- 2024-12-24Python编程基础:变量与数据类型
- 2024-12-23使用python部署一个usdt合约,部署自己的usdt稳定币
- 2024-12-20Python编程入门指南
- 2024-12-20Python编程基础与进阶
- 2024-12-19Python基础编程教程
- 2024-12-19python 文件的后缀名是什么 怎么运行一个python文件?-icode9专业技术文章分享
- 2024-12-19使用python 把docx转为pdf文件有哪些方法?-icode9专业技术文章分享
- 2024-12-19python怎么更换换pip的源镜像?-icode9专业技术文章分享