如何让程序像人一样的去批量下载歌曲?Python爬取付费歌曲
前言
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
今天来教大家一个自动化爬虫的工具 selenium
selenium
Selenium 是一个 Web 的自动化测试工具,最初是为网站自动化测试而开发的,就像玩游戏用的按键精灵,可以按指定的命令自动操作。
Selenium 测试工具直接操控浏览器中,就像真正的用户在操作一样。Selenium 可以根据的指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏,或者判断网站上某些动作是否发生等。
项目目标
今天的目标是爬取付费歌曲
受害者地址
http://tool.liumingye.cn/music/?page=homePage
先给大家看下效果

爬虫代码
导入工具
import time
import requests
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
解析网页
打开F12 开发者工具,不管三七二十一,先来一顿瞎分析~
哦豁~ 这里面居然有数据接口,还是post请求,那这样的话就咱们就看它的data参数,那里有变化
driver = webdriver.Chrome(executable_path='chromedriver.exe', options=chrome_options)
# key_world = input('请输入歌手名字:')
driver.get('http://tool.liumingye.cn/music/?page=searchPage')
driver.find_element_by_css_selector('#input').send_keys('张杰')
driver.find_element_by_css_selector('#search button:nth-child(2) i').click()
def download(name, url):
filename = 'C:\\Users\\Administrator\\Desktop\\音乐\\' + name + '.mp3'
response = requests.get(url=url)
with open(filename, mode='wb') as f:
f.write(response.content)
def drop_down():
"""模拟人去滚动鼠标向下浏览页面"""
for x in range(1, 20, 10):
time.sleep(0.5)
j = x / 10
js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j
driver.execute_script(js)
lis = driver.find_elements_by_css_selector('#player li')
f = 0
for li in lis:
f += 1
name = li.find_element_by_css_selector('.aplayer-list-title').text
li.find_element_by_css_selector('.aplayer-list-download').click()
down_url = driver.find_element_by_css_selector('#m-download > div > div > div.modal-body > div:nth-child(6) > div.input-group-append > a.btn.btn-outline-secondary.download').get_attribute('href')
driver.find_element_by_css_selector('#m-download > div > div > div.modal-header > button').click()
# time.sleep(1)
download(name, down_url)
print(name, down_url)
if f % 10 == 0:
drop_down()
运行代码后,效果如下
如何让程序像人一样的去批量下载歌曲?Python爬取付费歌曲的更多相关文章
- python爬取微信小程序(实战篇)
python爬取微信小程序(实战篇) 本文链接:https://blog.csdn.net/HeyShHeyou/article/details/90452656 展开 一.背景介绍 近期有需求需要抓 ...
- Python爬取微信小程序(Charles)
Python爬取微信小程序(Charles) 本文链接:https://blog.csdn.net/HeyShHeyou/article/details/90045204 一.前言 最近需要获取微信小 ...
- Python 爬取 13 个旅游城市,告诉你五一大家最爱去哪玩?
五一假期已经结束,小伙伴是不是都还没有玩过瘾?但是没办法,还有很多bug等着我们去写,同样还有需要money需要我们去赚.为了生活总的拼搏. 今年五一放了四天假,很多人不再只是选择周边游,因为时间充裕 ...
- Python 爬取 11 万 Java 程序员信息竟有这些重大发现!
一提到程序猿,我们的脑子里就会出现这样的画面: 或者这样的画面: 心头萦绕的字眼是:秃头.猝死.眼镜.黑白 T 恤.钢铁直男-- 而真实的程序猿们,是每天要和无数数据,以及数十种编程语言打交道.上能手 ...
- python 爬取糗事百科 gui小程序
前言:有时候无聊看一些搞笑的段子,糗事百科还是个不错的网站,所以就想用Python来玩一下.也比较简单,就写出来分享一下.嘿嘿 环境:Python 2.7 + win7 现在开始,打开糗事百科网站,先 ...
- python网络爬虫(12)去哪网酒店信息爬取
目的意义 爬取某地的酒店价格信息,示例使用selenium在Firefox中的使用. 来源 少部分来源于书.python爬虫开发与项目实战 构造 本次使用简易的方案,模拟浏览器访问,然后输入字段,查找 ...
- python爬取链家二手房信息,确认过眼神我是买不起的人
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...
- Python 爬取1688货源重量,自动发邮件到指定邮箱(qq),设置定时运行程序
1 # -*- coding: utf-8 -*- 2 # @Time : 2020/7/6 13:46 3 # @Author : Chunfang 4 # @Email : 3470959534@ ...
- 用python爬虫爬取去哪儿4500个热门景点,看看国庆不能去哪儿
前言:本文建议有一定Python基础和前端(html,js)基础的盆友阅读. 金秋九月,丹桂飘香,在这秋高气爽,阳光灿烂的收获季节里,我们送走了一个个暑假余额耗尽哭着走向校园的孩籽们,又即将迎来一年一 ...
随机推荐
- element.ui 自定义样式问题
方法有很多种 自定义类名 <el-button class="search_button" @click="search">查询</el-bu ...
- 使用代码生成工具快速生成基于ABP框架的Vue+Element的前端界面
世界上唯一不变的东西就是变化,我们通过总结变化的规律,以规律来应付变化,一切事情处理起来事半功倍.我们在开发后端服务代码,前端界面代码的时候,界面都是依照一定的规律进行变化的,我们通过抽取数据库信息, ...
- C#开发PACS医学影像处理系统(三):界面布局之工具栏
工具栏布局采用WPF中Grid作为容器,按钮采用自定义样式和图标,并采用Separator分割线: XAML设计器代码: 其中 Style="{StaticResource ButtonS ...
- Python爬取NBA虎扑球员数据
虎扑是一个认真而有趣的社区,每天有众多JRs在虎扑分享自己对篮球.足球.游戏电竞.运动装备.影视.汽车.数码.情感等一切人和事的见解,热闹.真实.有温度. 受害者地址 https://nba.hupu ...
- ajax之---“伪”ajax
views.py def ajax1(request): ret={'status':'true','message':'successful'} return HttpResponse(json.d ...
- JDK安装与基础环境变量配置 入门详解 - 精简归纳
JDK安装与基础环境变量配置 JERRY_Z. ~ 2020 / 9 / 17 转载请注明出处!️ 目录 JDK安装与基础环境变量配置 一.下载 二.安装 (1).双击.exe文件 (2).全选安装工 ...
- spring的初认识
spring的理解 1.spring是一个开源的免费框架(容器) 2.spring是一个轻量级的,非入侵式的框架 3.支持事务的处理,对框架的整合的支持 4.控制反转(ioc)和面向切口编程(aop) ...
- python条件控制语句要注意什么?本文详解
1.条件判断语句(if语句) 执⾏的流程:if语句在执⾏时,会先对条件表达式进⾏求值判断, 如果为True,则执⾏if后的语句 如果为False,则不执⾏ 语法: if 条件表达式 : 代码块 代码块 ...
- xxe-xml外部实体注入
XML文件格式及作用 copy至:https://www.runoob.com/xml/xml-tutorial.html 学习xxe为什么要了解XML和DTD,直接跳至Xxe查看: 定义&作 ...
- JavaScript的this到底代表谁?(this指向哪里?)
在很多编程语言中都有this这个特殊关键字的存在,比如Java中的this,还有本文要说到的JavaScript中的this.那么,JavaScript中this究竟有什么特性和用法呢?它又是如何定义 ...