Python爬虫实战案例——音乐爬虫,收费歌曲依旧可用

这篇具有很好参考价值的文章主要介绍了Python爬虫实战案例——音乐爬虫,收费歌曲依旧可用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

因为现在众多音乐平台下载歌曲都要收费了,导致我没有车载音乐听了。于是便自学爬虫做了这个简易的音乐爬虫。不是那些大平台的音乐爬虫,是一个不知名的小音乐网站的爬虫。下面开始正题:

首先,便是找不是那几家大互联网公司的音乐网站,在我的不懈努力之下终于找到了一家歌曲比较齐全的野鸡音乐网站(请允许我这么说)。虽说是野鸡,但是该有的热门歌手的新歌和热门歌曲都有,麻雀虽小,五脏俱全。

接着,便要对网站进行抓包,并对网页链接寻找规律,当然,这个小网站的网页链接的规律也是非常之简单。如下图所示:

爬虫付费音乐违法吗,python爬虫实战案例,爬虫,python,windows,pycharm,beautifulsoup

爬虫付费音乐违法吗,python爬虫实战案例,爬虫,python,windows,pycharm,beautifulsoup

不难发现,它的网页网址的规律,前面那一串不知名网址,加上你要搜索的的歌手的名字,然后再加上.html就可以了。于是乎,就解决了代码中url的问题。代码如下:

import requests
name = input()
url = 'http://www.2t58.com/so/{}/1.html'.format(name)
response = requests.get(url = url)

上面代码目前是完全可行,虽然我并没有加入heards等相关的反爬参数,但是网站在这目前为止也没有进行反爬。

接下来,我们随便点击几首歌曲:

爬虫付费音乐违法吗,python爬虫实战案例,爬虫,python,windows,pycharm,beautifulsoup

 文章来源地址https://www.toymoban.com/news/detail-776218.html

爬虫付费音乐违法吗,python爬虫实战案例,爬虫,python,windows,pycharm,beautifulsoup

 爬虫付费音乐违法吗,python爬虫实战案例,爬虫,python,windows,pycharm,beautifulsoup

 

因为喜欢周杰伦的朋友特别的多啊,我就搜索了周杰伦,并点了他的几首歌曲,我们可以发现,网页栏的网页地址变得毫无规律了,是一串我们看不懂的英文字母加上.html。而我们想要下载歌曲又必须进入到这个给页面,所以我们必须找到它网页地址的规律,或者说我们必须找到,那一串毫无规律的英文字母可以从哪个数据包中得到。接下来,我便进行了数据抓包并分析。 

爬虫付费音乐违法吗,python爬虫实战案例,爬虫,python,windows,pycharm,beautifulsoup

很容易发现,在每个a标签的href中的最后一个字段就是我们要的那一串毫无规律的英文字母,所以我们要做的就是查看它的url,然后通过requests的模块发送请求将这个网页给请求下来,经过我的尝试,该网站在这里进行了反爬,如果不加入heards则会请求不到数据,大家注意一下。然后,就是用正则表达式将我们需要的英文字母给匹配保留下来,代码如下:

ex = '<div class="name"><a href="/song/(.*?).html" target="_mp3">.*?</a></div>'
musicIndex = re.findall(ex, response.text, re.S)

接下来,就是回去歌曲的下载链接,将它以二进制形式保存就可以了。随便点击一首歌曲,对歌曲详细页面进行抓包。

爬虫付费音乐违法吗,python爬虫实战案例,爬虫,python,windows,pycharm,beautifulsoup

数据包是非常多的,我们可以根据数据包的类型来有选择型的查看,音频和视频等很显然就是media类型的数据包。很显然这就是我们想要的音乐链接,我们将它在一个单独的网页栏中搜索可以得到没有限制可以直接下载的完整的音乐。但是我们要的是批量下载,一首一首的下载效率太慢了。所以,我们还要继续寻找有没有一个数据包,它的响应就包含了这首歌曲的链接。我的做法是将最后一个.mp3的名称在数据包搜索栏中搜索对应关键字,很幸运,我找到了。

 

 爬虫付费音乐违法吗,python爬虫实战案例,爬虫,python,windows,pycharm,beautifulsoup

爬虫付费音乐违法吗,python爬虫实战案例,爬虫,python,windows,pycharm,beautifulsoup

 接下来就非常简单了,我们已经找到了每个要搜索的歌手的详情网页的规律(固定网址+歌手名字+.html),我们有获取了每一首歌曲的详情页面(那一段没有规律的英文字母),最后又在歌曲详情页面找到了包含歌曲链接的数据包,所以接下来我们要做的就是,将歌曲链接用二进制保存下来,学过爬虫的同学应该注意到了,上面这个数据包的响应数json数据,返回的是一个字典形式的数据,我们可以根据键值对来取出我们需要的歌曲的下载链接。首先就是将这个给数据包根据对应的url请求下来,注意在请求头中查看相应url的参数,代码如下:

data = {'id': i,'type': 'music'}

url2 = 'http://www.2t58.com/js/play.php'

response2 = requests.post(url = url2, headers = headers, data = data)

json_data = response2.json()

musicList = json_data['url']

我们将歌曲的下载链接保存在列表musicList中,最后就是将歌曲保存,代码如下:

musicResponse = requests.get(url = musicList)

filename = json_data['title'] + '.mp3'

with open('E:/music/' + filename, 'wb') as f:
    f.write(musicResponse.content)
    print(filename + '下载成功!')

大家改一下路径就可以正常运行了。

 

完整代码:

import requests
import re

# 张学友:aHNj
# 陈奕迅:eG4
# 林忆莲:d2t3eA



name = input()
url = 'http://www.2t58.com/so/{}/1.html'.format(name)
response = requests.get(url = url)
ex = '<div class="name"><a href="/song/(.*?).html" target="_mp3">.*?</a></div>'
musicIndex = re.findall(ex, response.text, re.S)
smallmusicList = []
for j in range(0, 5):
    smallmusicList.append(musicIndex[j])
print(smallmusicList)



headers ={
'Accept':'application/json, text/javascript, */*; q=0.01',
'Accept-Encoding':'gzip, deflate',
'Accept-Language':'zh-CN,zh;q=0.9',
'Connection':'keep-alive',
'Content-Length':'26',
'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
'Cookie':'Hm_lvt_b8f2e33447143b75e7e4463e224d6b7f=1690974946; Hm_lpvt_b8f2e33447143b75e7e4463e224d6b7f=1690976158',
'Host':'www.2t58.com',
'Origin':'http://www.2t58.com',
'Referer':'http://www.2t58.com/song/bWhzc3hud25u.html',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',
'X-Requested-With':'XMLHttpRequest'
}


for i in musicIndex:
    data = {'id': i,'type': 'music'}

    url2 = 'http://www.2t58.com/js/play.php'

    response2 = requests.post(url = url2, headers = headers, data = data)

    json_data = response2.json()

    musicList = json_data['url']

    musicResponse = requests.get(url = musicList)

    filename = json_data['title'] + '.mp3'

    with open('E:/music/' + filename, 'wb') as f:
        f.write(musicResponse.content)
        print(filename + '下载成功!')


可能是因为网站不够完善,有些歌手的详情网页并不是歌手名+.html,而是一些无规律的英文字母,我暂时发现的已经放在上面,如果要下载该歌手的歌曲,就输入相应的英文字母。

 

仅供学习使用,请不要用于违法犯罪。

 

 

 

 

 

到了这里,关于Python爬虫实战案例——音乐爬虫,收费歌曲依旧可用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 利用python获取网易云音乐的歌曲,原理+代码!简单易懂

    关于爬取网易云音乐的歌曲,有一些思路。代码在末尾哦 一般来说,爬取音乐,采取正则表达式或者直接调用API,这里采用API 首先导入需要用到的库 from lxml import etree import requests import json from concurrent.futures import ThreadPoolExecutor 然后我们要知道,要爬取音乐就要先获取到API接口

    2024年02月03日
    浏览(38)
  • 【Python 爬虫脚本】Python爬取歌曲

    目标:爬取酷狗音乐 右键--检查 进入网络,查看所有请求,事先先清空历史数据 点击刷新,重新进入页面 找到index请求,在预览中可以看到  play_backup_url:\\\"https://webfs.tx.kugou.com/202308251554/97c6fef48119300dd2a238ee8025c521/v2/409ebc56ea4ba76e58d8c89af8d03b6a/KGTX/CLTX001/409ebc56ea4ba76e58d8c89af8d03b6a.

    2024年01月17日
    浏览(50)
  • python爬虫实战案例——某站视频爬虫

    今天突然发现,某站的视频在电脑上是不能下载的。于是乎,就打算在电脑上爬取一下某站的视频。让大家在电脑上也能看, 某站的视频是音频和视频分开的,我在网上搜了一下,要用到一个叫ffmpeg的音视频合成的库,网上教程很多,大家搜一下就可以找到了,我就不在此赘

    2024年02月10日
    浏览(40)
  • Python爬虫实战案例——第二例

    某某美剧剧集下载(从搜索片名开始) 本篇文章主要是为大家提供某些电影网站的较常规的下载电影的分析思路与代码思路(通过爬虫下载电影),我们会从搜索某部影片的开始直到成功下载某一部电影。 地址:aHR0cHM6Ly93d3cuOTltZWlqdXR0LmNvbS9pbmRleC5odG1s 先来分析页面 打开开发

    2024年02月11日
    浏览(45)
  • Python爬虫实战案例——第一例

    X卢小说登录(包括验证码处理) 地址:aHR0cHM6Ly91LmZhbG9vLmNvbS9yZWdpc3QvbG9naW4uYXNweA== 打开页面直接进行分析 任意输入用户名密码及验证码之后可以看到抓到的包中传输的数据明显需要的是 txtPwd 进行加密分析。按 ctrl+shift+f 进行搜索。 定位来到源代码中断点进行调试。 然后直接跟

    2024年02月12日
    浏览(55)
  • 〖Python网络爬虫实战㉗〗- Selenium案例实战(一)

    订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+                  python项目实战                  Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付费专栏,

    2024年02月14日
    浏览(48)
  • 〖Python网络爬虫实战㉙〗- Selenium案例实战(三)

    订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+                  python项目实战                  Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付费专栏,

    2024年02月07日
    浏览(59)
  • 〖Python网络爬虫实战㉕〗- Ajax数据爬取之Ajax 案例实战

    订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+                 python项目实战                  Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付费专栏,

    2024年02月06日
    浏览(70)
  • Python爬虫逆向实战案例(五)——YRX竞赛题第五题

    题目:抓取全部5页直播间热度,计算前 5 名直播间热度的 加和 地址:https://match.yuanrenxue.cn/match/5 cookie中m值分析 首先打开开发者工具进行抓包分析,从抓到的包来看,参数传递了查询参数 m 与 f ,同时页面中给了提示说cookie仅有50秒的有效期,所以逆向参数可以直接通过co

    2024年02月11日
    浏览(51)
  • 〖Python网络爬虫实战㉔〗- Ajax数据爬取之Ajax 分析案例

    订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+                 python项目实战                  Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付费专栏,

    2024年02月07日
    浏览(72)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包