当前位置: 首页 > news >正文

歌曲爬虫下载

本次编写一个程序要爬取歌曲音乐榜https://www.onenzb.com/ 里面歌曲。有帮到铁子的可以收藏和关注起来!!!废话不多说直接上代码。

1 必要的包

import requests
from lxml import html,etree
from bs4 import BeautifulSoup
import re
import pandas as pd

2 获取歌曲url和歌曲名称

url = 'https://www.onenzb.com/'    
header = {'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36'
}
response = requests.get(url=url, headers=header)
soup = BeautifulSoup(response.text, 'html.parser')  
print(soup)
url_list = []
song_name = []
for link in soup.find_all('a', href=lambda x: x and x.startswith('/music/')):# 提取href属性和title属性href = link.get('href')title = link.get('title')url_ = 'https://www.1nzb.com' + href   # 完整的urlurl_list.append(str(url_))song_name.append(str(title))
song_name = [song_name.replace('/','').replace('CV','').replace('砂狼白子(:安雪璃)早濑优香(:小敢)','') for song_name in song_name]
print(song_name)
print(url_list)

3 解析每首歌曲的url 以及歌名添加

for url,name in dict(zip(url_list,song_name)).items():print(url,name)print(name)header = {'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36'}response = requests.get(url=url, headers=header)soup = BeautifulSoup(response.text, 'html.parser')  # html.parser  lxmlmp3_links = [a['href'] for a in soup.find_all('a', href=True) if a['href'].endswith('.mp3')]# 输出找到的URLfor url in mp3_links:print(url)# MP3文件的URLmp3_url = url# 定义要保存的文件名filename = 'E:/学习/项目/歌曲爬虫/歌曲2/{}.mp3'.format(name)# 发送GET请求response = requests.get(mp3_url, stream=True)# 确保请求成功response.raise_for_status()# 写入文件with open(filename, 'wb') as f:for chunk in response.iter_content(chunk_size=8192):f.write(chunk)print('MP3文件已下载并保存为:', filename)

部分结果:

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • java多线程(初阶)
  • 【Godot4自学手册】第四十五节用着色器(shader)制作水中效果
  • linux C语言remove函数及相关函数
  • 如何选择较为安全的第三方依赖版本?
  • [C++][opencv]基于opencv实现photoshop算法可选颜色调整
  • 微前端架构下的应用版本回退策略与实践
  • C语言 | Leetcode C语言题解之第341题扁平化嵌套列表迭代器
  • idea付费插件,哪个比较好用?
  • 书生浦语大模型全链路开源开放体系学习
  • Docker和虚拟机的区别详细讲解
  • Android T about screen rotation(二)
  • spring boot 接收第三方mq消息
  • 基于JAVA美容院管理系统(源码+论文+讲解等)
  • Windows利用ssh免密码登录Linux
  • 应急响应-DDOS-典型案例
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • Brief introduction of how to 'Call, Apply and Bind'
  • ERLANG 网工修炼笔记 ---- UDP
  • exports和module.exports
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • PHP 小技巧
  • scala基础语法(二)
  • spring boot下thymeleaf全局静态变量配置
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • Vue--数据传输
  • 前端攻城师
  • 如何胜任知名企业的商业数据分析师?
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​iOS实时查看App运行日志
  • !!Dom4j 学习笔记
  • #AngularJS#$sce.trustAsResourceUrl
  • #pragma once
  • #WEB前端(HTML属性)
  • (~_~)
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (九十四)函数和二维数组
  • (三)elasticsearch 源码之启动流程分析
  • (五)c52学习之旅-静态数码管
  • (转)iOS字体
  • (转)socket Aio demo
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • .net core 的缓存方案
  • .NET Core 和 .NET Framework 中的 MEF2
  • .NET MVC第三章、三种传值方式
  • .NET 指南:抽象化实现的基类
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .stream().map与.stream().flatMap的使用
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • @ConfigurationProperties注解对数据的自动封装
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • @FeignClient注解,fallback和fallbackFactory
  • @hook扩展分析
  • [20170705]lsnrctl status LISTENER_SCAN1
  • [8481302]博弈论 斯坦福game theory stanford week 1