很多人一直苦于找不到好的音乐资源,那是他们没有接触过Python爬虫啊,以下教程,只要是稍微会一些Python基础的小伙伴都可以制作脚本爬取音乐资源!

/home/roland/PycharmProjects/Main.py
please input the artist name: billie eilishProcess finished with exit code 0

运行之后需要输入爬取的歌手名,这里我们填写一个喜欢的歌手名然后回车即可(支持中文歌手),日志并没有输出内容,而是直接将mp3文件保存到save_path路径下,如下图所示:

这里用的python版本是3.6 理论上3.X版本都可以直接运行,不用额外装request库。
代码分析

  • 下面函数的作用是拼接请求报头,请求方式为POST
  • 获取方式:打开浏览器控制台---->NetWork选项—>发送一次请求—>查看POST

以chrome为例
按下F12打开控制台
依次依照下图找到Form Data即为所需,当然,并不是所有的请求方式都会用到data报头,我们这么做的目的是模仿浏览器访问网页的过程。

而后把需要添加到报头的字段依次添加进来,这里pagescontent是动态变量(原网址为ajax异步加载)content即为查找的歌手

在学习过程中有什么不懂得可以加我的
python学习交流扣扣qun,784758214
群里有不错的学习视频教程、开发工具与电子书籍。
与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容def resemble_data(content, index):data = {}data['types'] = 'search'data['count'] = '30'data['source'] = 'netease'data['pages'] = indexdata['name'] = contentdata = urllib.parse.urlencode(data).encode('utf-8')return data

此外我们还需要获取到User-Agent对应的代码是:

opener.addheaders =[('User-Agent','Mozilla/5.0 (X11; Linux x86_64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36')]

这个东西在那里获取呢?

我们直接从浏览器的控制台获取就好了,目的将python的request请求伪装成浏览器访问。

    # set proxy agentproxy_support = urllib.request.ProxyHandler({'http:': '119.6.144.73:81'})opener = urllib.request.build_opener(proxy_support)urllib.request.install_opener(opener)# set proxy agent

这里我们又设置了一个代理ip,防止服务器的反爬虫机制(一个ip频繁访问会被认为是爬虫而不是访客操作,这里仅仅是实例,我们可以爬取代理ip的地址和端口号来让更多ip同时访问,减小被认定为爬虫的可能)
下面是爬取代理ip的例子(不感兴趣的话可以直接跳过)

import urllib.request
import urllib.parse
import re
url = 'http://31f.cn/'
head = {}
head['User-Agent'] =
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
response = urllib.request.urlopen(url)
html_document = response.read().decode('utf-8')
pattern_ip = re.compile(r'<td>(\d+\.\d+\.\d+\.\d+)</td>[\s\S]*?
<td>(\d{2,4})</td>')
ip_list = pattern_ip.findall(html_document)
print(len(ip_list))
for item in ip_list:print("ip地址是:%s 端口号是:%s" % (item[0], item[1]))

这里的response返回的其实是一个音乐文件的链接地址,格式类似于xxxxuuid.mp3我们把默认的uuid.mp3直接命名为歌曲名.mp3,然后以二进制文件格式写入文件。

 data = {}data['types'] = 'url'data['id'] = iddata['source'] = 'netease'data = urllib.parse.urlencode(data).encode('utf-8')response = urllib.request.urlopen(url, data)music_url_str = response.read().decode('utf-8')music_url = pattern.findall(music_url_str)result = urllib.request.urlopen(music_url[0])file = open(save_path+name+'.mp3', 'wb')file.write(result.read())

至于Request url,可以在这里获取(当然,这只是一个例子,这个url并不是例子所用的url):

以下是完整的代码,把音乐文件的保存路径save_path = '/home/roland/Spider/Img/修改成自己的保存路径就可以了

对Python感兴趣或者是正在学习的小伙伴,可以加入我们的Python学习扣qun:784758214,看看前辈们是如何学习的!从基础的python脚本到web开发、爬虫、django、数据挖掘等,零基础到项目实战的资料都有整理。送给每一位python的小伙伴!分享一些学习的方法和需要注意的小细节,教你如何实现边学习边用Python赚钱的学习方式。点击加入我们的 python学习者聚集地

import urllib.request
import urllib.parse
import json
import redef resemble_data(content, index):data = {}data['types'] = 'search'data['count'] = '30'data['source'] = 'netease'data['pages'] = indexdata['name'] = contentdata = urllib.parse.urlencode(data).encode('utf-8')return datadef request_music(url, content):# set proxy agentproxy_support = urllib.request.ProxyHandler({'http:': '119.6.144.73:81'})opener = urllib.request.build_opener(proxy_support)opener.addheaders = [('User-Agent','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36')]urllib.request.install_opener(opener)# set proxy agenttotal = []pattern = re.compile(r'\(([\s\S]*)\)')for i in range(1, 10):data = resemble_data(content, str(i))response = urllib.request.urlopen(url, data)result = response.read().decode('unicode_escape')json_result = pattern.findall(result)total.append(json_result)return totaldef save_music_file(id, name):save_path = '/home/roland/Spider/Img/'pattern = re.compile('http.*?mp3')url = 'http://www.gequdaquan.net/gqss/api.php?callback=jQuery111307210973120745481_1533280033798'data = {}data['types'] = 'url'data['id'] = iddata['source'] = 'netease'data = urllib.parse.urlencode(data).encode('utf-8')response = urllib.request.urlopen(url, data)music_url_str = response.read().decode('utf-8')music_url = pattern.findall(music_url_str)result = urllib.request.urlopen(music_url[0])file = open(save_path+name+'.mp3', 'wb')file.write(result.read())file.flush()file.close()def main():url = 'http://www.gequdaquan.net/gqss/api.php?callback=jQuery11130967955054499249_1533275477385'content = input('please input the artist name:')result = request_music(url, content)for group in result[0]:target = json.loads(group)for item in target:save_music_file(str(item['id']), str(item['name']))main()

利用Python爬取音乐资源,小白福音相关推荐

  1. python爬取音乐资源_python+wget轻松爬取MP3音乐文件

    在搞拼音学习的时候,需要对应的文字的读音.发现XX汉语上面有需要的MP3文件.如图,红框框起来的就是MP3的url地址. 分析一下url,我们大致已经能得出"你"字的MP3文件对应 ...

  2. 利用 Python 爬取了近 3000 条单身女生的数据,究竟她们理想的择偶标准是什么?

    灵感来源与学习:利用 Python 爬取了 13966 条运维招聘信息,我得出了哪些结论? 本文原创作者:壹加柒 本文来源链接:https://blog.csdn.net/yu1300000363/a ...

  3. python 翻译库本地库_利用python爬取并翻译GEO数据库

    原标题:利用python爬取并翻译GEO数据库 GEO数据库是NCBI创建并维护的基因表达数据库,始于2000年,收录了世界各国研究机构提交的高通量基因表达数据,现芯片集数据量高达12万以上.想要从这 ...

  4. python 怎么爬桌软件数据_如何利用Python爬取并分析红岭创投的数据?

    第一步:爬取数据 通过 selenium + Firefox 的无头模式将需要的数据爬取出来,代码实现不在赘述,详细步骤可查看我的上一篇图文(如何利用Python爬取网易新闻), 由于 seleniu ...

  5. 利用python爬取东方财富网股吧评论并进行情感分析(一)

    利用python爬取东方财富网股吧评论(一) python-东方财富网贴吧文本数据爬取 分享一下写论文时爬数据用到的代码,有什么问题或者改善的建议的话小伙伴们一起评论区讨论.涉及内容在前人的研究基础之 ...

  6. python爬取股票信息_利用Python爬取网易上证所有股票数据(代码

    利用Python爬取网易上证所有股票数据(代码 发布时间:2018-04-14 17:30, 浏览次数:1261 , 标签: Python import urllib.request import r ...

  7. 利用python爬取豆瓣电影top250

    利用python爬取豆瓣电影top250: 注:本内容只是作为个人学习记录 1.业务分析 进入网页https://movie.douban.com/top250 可以看见每部电影都呈现在眼前,点击电影 ...

  8. 利用python爬取丁香医生上新型肺炎数据,并下载到本地,附带经纬度信息

    新增:国外疫情网站介绍 已更新:爬取国外疫情数据 已更新:新型肺炎历史数据下载 2020年3月27日补充: 制作了一个全球肺炎数据查询下载网站,效果如下: 访问地址:http://119.3.227. ...

  9. python爬取电脑本地数据_利用python爬取丁香医生上新型肺炎数据,并下载到本地,附带经纬度信息...

    原标题:利用python爬取丁香医生上新型肺炎数据,并下载到本地,附带经纬度信息 新型肺炎肆虐全国,可以预知,最近一两年地理学中会有一部分论文研究新型肺炎的空间分布及与其他指标的关联分析.获取其患病人 ...

  10. 利用Python爬取国家水稻数据中心的品种数据

    利用Python爬取国家水稻数据中心的品种数据 一.页面获取 python可以进行对网页的访问,主要用到requests,beautifulsoup4包. 首先新建一个page的py文件,用来获取页面 ...

最新文章

  1. 免费公开课报名 | 达观数据个性化推荐系统实践
  2. 最新dnsmasq安装部署详解(centos6)
  3. 使用Forms Authentication 身份验证 之 Basic Knowledge
  4. 8 关于数据仓库维度数据处理的方法探究系列——父子维
  5. Windos 解决Flutter 报错
  6. angular2 学习二 最简单的模板
  7. 用python做数据分析,安装包一次到位
  8. 项目怎么部署到服务器上_项目开发学习 云服务器的部署
  9. 程序员减轻压力的十个建议
  10. 动态链接库的创建和调用方法
  11. CF思维联系– Codeforces-988C Equal Sums (哈希)
  12. 第七章部分例题最大乘积
  13. Bing Maps开发扩展三:Bing Maps中渲染ESRI SHP空间数据
  14. VUE如何关闭Eslint的方法
  15. 181012词霸扇贝有道每日一句
  16. 自制1寸照片及打印排版
  17. CruiseControl 安装和启动
  18. 绿盟 java 面试_绿盟科技校园招聘面试经验|面试问题(共52条)- 职业圈
  19. 农户在集市上卖西瓜,他总共有1020个西瓜,第一天卖掉一半多两个,第二天卖掉剩下的一半多两个, 问照此规律实下去,该农户几天能将所有的西瓜卖完。C语言
  20. Java之非对称加密

热门文章

  1. linux的OOM killer
  2. qq的云消息服务器,20 万台 QQ 服务器全面上云
  3. geek.exe是什么_How-To Geek正在雇用一名Geeky作家-以下是详细信息
  4. python 随机森林调参_scikit-learn随机森林调参小结
  5. 嵌入式实践教程--Android HAL自定义HAL代码教程
  6. Mac上如何测试IE浏览器兼容性-虚拟机解决方案
  7. ArcGis空间分析学习:超市选址分析
  8. 嘿嘿,长假最后一天!摸鱼一把,我用Python做一个美女消消乐!
  9. 服务器上连接无线路由器,手把手教你怎么设置连接两个无线路由器上网
  10. 理解Vulkan中的各种对象