吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2376|回复: 49
上一主题 下一主题
收起左侧

[Python 原创] 音乐爬虫分析

  [复制链接]
跳转到指定楼层
楼主
buluo533 发表于 2024-8-1 21:42 回帖奖励
上次做了一个下歌的爬虫,有大佬想了解思路,直接安排上


上次兄弟们玩的有点狠,这次不放源码对全部思路和过程进行分析,仅供学习交流
随便找个下歌的网站,我是随便搜的
网址:爱听音乐网_Mp3歌曲下载_无损音乐下载_免费音乐网_LRC歌词下载站 (1nzb.com)
有了网址我们就可以对搜索的接口分析,看他的参数怎么传入,实现搜索


简单搜索一下



可以看到的是,接口是https://www.1nzb.com/search?ac,通过ac传入搜索的关键词:周杰伦
这样就可以写出第一次请求的url地址,同时通过关键字进行自己需要的搜索
[Python] 纯文本查看 复制代码
import requests
from bs4 import BeautifulSoup
from fake_useragent import UserAgent

ua = UserAgent().random
url = 'https://www.1nzb.com/search?ac=周杰伦'
headers = {
    'User-Agent':ua
}
response = requests.get(url, headers=headers)

这里为了方便测试先将请求url写死
然后根据页面信息进行解析


可以清晰的看到需要的数据所在的位置li标签里面a标签,这个里面有点小坑就是名字不好处理
接下来就是通过汤勺(soup)进行解析
[Python] 纯文本查看 复制代码
soup = BeautifulSoup(response.text, 'lxml')
lists=soup.select('ul.mul li')

这里定位到所有的li标签,接下来就是用for循环遍历获取li标签的中的内容
首先获取a标签的属性href,得到一个url地址,但是这个地址需要拼接才能访问,拼接https://www.1nzb.com,需要注意的是/的数量
接下来获取歌曲的名字,我们可以注意到每个名字前都要一个‘-’,我们可以利用正则也可以利用split函数进行分割
代码如下:
[Python] 纯文本查看 复制代码
for li in lists:    produce_url='https://www.1nzb.com'+li.find('a').get('href')
    song_name=li.find('a').text.split('-')[1]


这样我们可以放一个空字典,让歌曲名字和下载网址作为键值对相互对应,实现输入歌曲名字就可以进入下载的地址,输入哪一首歌名就下载哪一首
[Python] 纯文本查看 复制代码
dic[song_name]=produce_url

注意dic是需要提前定义的
接下来就是解析produce_url作为下载的路径

网站很友好(大家下手也友好一点,加点延时),可以直接用re或者bs解析,我们也看看网页元素是什么情况

这个获取还是很简单的,爬虫的基本功
[Python] 纯文本查看 复制代码
down_url=soup.find('input',class_='layui-input').attrs['value']

这样就获取到了mp3下载的url,接下来就直接请求下载
[Python] 纯文本查看 复制代码
music=requests.get(down_url,headers=headers).contentwith open('music.mp3','wb') as f:
    f.write(music)


一个简单的爬虫步骤分析,大佬们勿喷
提供给想了解的小白






免费评分

参与人数 13吾爱币 +19 热心值 +13 收起 理由
fxin888 + 1 + 1 学到了
nieshi666 + 1 + 1 热心回复!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
oldkingwin + 1 + 1 我很赞同!
kjzl5290 + 1 + 1 热心回复!
jalonewy + 1 + 1 用心讨论,共获提升!
top777 + 1 + 1 谢谢@Thanks!
melooon + 1 + 1 谢谢@Thanks!
不忘形影 + 2 + 1 感谢这种一步步的分析,很有用
O2H2O + 1 + 1 谢谢@Thanks!
woyucheng + 1 + 1 谢谢@Thanks!
TADYCB + 1 + 1 我很赞同!
lgc81034 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
不忘形影 发表于 2024-8-2 09:10
感谢大佬的分享,最近转战Python,在学习中,从你的第一篇文章:DrissionPage自动化爬取某音评论区,关注你了,感谢你的持续分享,特别是这种一步步分析,给我了很多启发与指导
沙发
yyq123 发表于 2024-8-1 21:44
3#
skyapplezhao 发表于 2024-8-1 21:48
4#
clemmenson 发表于 2024-8-1 21:59
感谢楼主分享,非常有价值
5#
xueyinglantian 发表于 2024-8-1 22:00
楼主真心细节,谢谢分享,膜拜
6#
windindind 发表于 2024-8-1 22:01
感谢分享
7#
hygqx6 发表于 2024-8-1 22:08
思路清晰啊,是不是可以直接源码查询,找下载地址,直接搜源地址呢?
8#
 楼主| buluo533 发表于 2024-8-1 22:15 |楼主
hygqx6 发表于 2024-8-1 22:08
思路清晰啊,是不是可以直接源码查询,找下载地址,直接搜源地址呢?

可以的有些细节还需要自己完善,我没有写在文章里
9#
Jiea 发表于 2024-8-1 22:19
学习学习
10#
zhangxiaoxiao 发表于 2024-8-1 22:20
学习了,谢谢楼主
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-13 14:49

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表