本帖最后由 jiusui 于 2023-1-27 16:50 编辑
import requests#导入请求模块
from lxml import etree#解析数据
import os
file="D:\Program Files (x86)\Desktop\Technology\Music\\"
if not os.path.exists(file):
os.mkdir(file)
#1.确定网址
#互联网上标准资源地址
url = 'https://music.163.com/discover/toplist?id=3778678'
#2.搭建关系 发送请求 接受响应
#爬虫原理:伪装成浏览器
#字典 键名 键值 键值对 {键名:键值}
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/53"
"7.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
}
#工具 requests
#请求目标网站
response = requests.get(url=url,headers=headers).text
# print(response)
#3.筛选数据
res = etree.HTML(response)
# print(res)
#xpath
#模糊匹配 我的名字叫做阿青 名字 阿青
a_list = res.xpath("//a[contains(@href,'/song?')]")
# print(a_list)
for i in a_list:
href =i.xpath("./@href")[0]
# print(href)
music_id = href.split("=")[1]
# print(music_id)
#media/outer/url
#拿到所有音乐的单独地址
music_url = 'https://music.163.com/song/media/outer/url?id='+music_id
music_name = i.xpath('./text()')[0]
# print(music_url,music_name)
#4.保存本地
#二进制
music_content = requests.get(url=music_url, headers=headers).content
with open(file +music_name +'.mp3',mode='wb') as f:
f.write(music_content)
print(f"下载{music_name}完成啦!")
|
点评
使用道具 举报
点评
使用道具 举报
是的
使用道具 举报
也可以,但是还没写
使用道具 举报