python音乐下载,小白也可以写爬虫

摘要:
Id=4292‘headers={‘User Agent‘:UserAgent().column#随机模仿浏览器请求标头}response=requests。getres=BeautifulSoupid_lists=资源查找。find_all('a')returnid_Listsdefdownload:#获取音乐ID后,需要解析并保存headers={'UserAgent':UserAgent().rand}#在此处添加另一个headers,否则数据的url将为false='http://music.163.com/song/media/outer/url?id='#网易云外部链接地址,您可以通过该地址下载response=requests。收到content#return binary f=open#此处下载的歌曲存储在音乐文件夹f中。writeprintif of disk E__ name__=='__main__':createFileget_html()forid_ urlinget_html):names=id_ url。texthrefs=id_Url['href'][9:]#使用变量接收歌曲名称和iddownloadtime。sleep#睡一秒钟,以防止过于频繁的访问。如果您想下载其他歌曲,可以替换url中的链接。请删除“/#”以获取真实链接。此代码适用于歌曲列表和专辑下载。最后,感谢您的阅读。我是小白。今年,我在大一学习了三个月的python。

**
简介:使用BeautifulSoup和request模块进行抓取和解析,
最后保存音乐(注:音乐质量是普通品质的)
**
关于模块的安装,打开cmd输入

pip install bs4 //安装BeautifulSoup
pip install requests //安装requests
pip install fake_useragent //这个模块可以随机生成一个headers

(不能安装请升级pip或者以管理员模式打开cmd)

我们这里爬取的是网易云音乐

https://music.163.com/artist?id=4292 //爬取的链接
http://music.163.com/song/media/outer/url?id= //音乐播放外链链接

首先:我们先进行网页源码获取

https://music.163.com/#/artist?id=4292

https://weibo.com/6056761580/IAhNGivsJ
最开始我们是直接来用这个链接来请求网页的,但是我们会发现返回的href元素是空的(#)。这个链接并不是真正的歌单链接。

https://weibo.com/6056761580/IAhNGivsJ?type=comment
但经寻找会发现source中有个不一样的网页链接

接下来我们会找到这个链接https://music.163.com/song?id=1407551413,看一眼是不是不太一样。和原链接就一个‘/#’之差,内容就不一样,这是网易云隐藏了源网页。
然后仔细查看就可以找到音乐id和名称

接下来就是代码实现了

import requests
from fake_useragent import UserAgent
from bs4 import BeautifulSoup
import time
import os

def createFile(file_path):
if os.path.exists(file_path) is False:
os.makedirs(file_path)
# 切换路径至上面创建的文件夹
os.chdir(file_path)

def get_html():
url = 'https://music.163.com/artist?id=4292'
headers = {
'User-Agent': UserAgent().random #随机一个模仿浏览器请求头
}
response = requests.get(url, headers=headers)
res = BeautifulSoup(response.text, 'lxml')
id_lists = res.find(class_='f-hide').find_all('a')
return id_lists

def download(names,hrefs):
#获取音乐id后还要进行解析并保存
headers = {
'User-Agent': UserAgent().random
}
#这里还要再加个headers,不然会假数据
url = 'http://music.163.com/song/media/outer/url?id='
#网易云外链地址,通过这个可以免费下载
response = requests.get(url+hrefs,headers=headers).content
#返回二进制
f = open('D:\music\{}.mp3'.format(names),'wb') #这里下载的歌曲储存到E盘music文件夹
f.write(response)
print('正在下载{}'.format(names))

if __name__ == '__main__':
createFile('D:music')
get_html()
for id_url in get_html():
names = id_url.text
hrefs = id_url['href'][9:]
#用变量来接收歌曲名和id
download(names,hrefs)
time.sleep(1) #睡眠一秒,防止过于频繁访问


如果你想下载其他歌曲可以把url中的链接换掉,注意把‘/#’删除以获取真正的链接。这个代码适用于歌单和专辑下载

最后谢谢大家看完,本人小白一个。今年大一自学了3个月python。第 一次发博客,如有不好之处,望指出。

免责声明:文章转载自《python音乐下载,小白也可以写爬虫》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇iOS 和 Android 中的Alert机器学习:决策树(二)——sklearn决策树调参下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

解决 No module named 'airtest.core'

当前环境mac os 1、已pip install airtest 2、可以通过命令行运行 airtest的demo,但是使用pycharm 运行会提示No module named 'airtest.core' 3、当前pycharm 解释器已设置为 自己安装的python版本 4、在sitepackage 中可见 airtest的包,在pychram中...

python 字典 拼接SQL语句

def gen_sql(table_name, data):     """   :param table_name: 表名称   :param data: 字典对象 key为字段(要与数据库字段一样), value为插入值   :return: 拼接好的sql语句   """   fields = list()   values = list()   ...

python(数字Number)

数字 Python 数字数据类型用于存储数值。 数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间 Python 支持三种不同的数值类型: 整型(int) - 通常被称为是整型或整数,是正或负整数,不带小数点。Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Python2 的 Lo...

python中常用的内置函数和内置模块

一、InnerFuction 内置函数1、type() 返回对象或者变量的数据类型      print(type("嘻嘻"))            #class_str       a=3      print(type(a))                  #class_int 2、abs() 返回数字的绝对值      print(abs(-1...

Python读取大文件的"坑“与内存占用检测

Python高级教程- Python进阶|Scrapy教程|Python高级|Python深入 (pythontab.com) python读写文件的api都很简单,一不留神就容易踩”坑“。笔者记录一次踩坑历程,并且给了一些总结,希望到大家在使用python的过程之中,能够避免一些可能产生隐患的代码。 1.read()与readlines()随手搜索pyt...

Mac下Python和Pycharm之virtualenv

一、python如何配置virtualenv   1.安装virtualenv pip3 install virtualenvpip install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenvpip3 install --upgrade pip 2.创建目录 mkdir Myproject...