python最简单的方法爬取唱吧歌曲
第一个python爬虫–爬取唱吧歌曲
介绍:
- 最近刚开始学python做网页爬虫,试着写了一个简单的爬虫项目,用最简单的requests和Beautifulsoup实现。
- 唱吧支持导出歌曲,但需要money,网页版在线听只能点一首听一首,所以想通过爬虫将歌曲音频下载到本地
- 目标:尽可能多的爬取我的主页中的歌曲,下载保存到本地
实现步骤:
唱吧网页版,直接搜索用户名,来到用户主页,接下来我们就爬去该页的歌曲。
import requests from bs4 import BeautifulSoup import timeurl = 'http://changba.com/u/58505259'user_agent = 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36'res = requests.get(url, user_agent) soup = BeautifulSoup(res.text, 'html.parser')
分析网页
F12 打开源代码检查,在elements标签中先找到一条记录
可以看到很容易找到了,并且下面很多并列的 li 标签保存正是下面的其他歌曲
先找到他们的最小级共同父标签,接着查找所有的 li 标签
遍历每个 list 标签,获取歌曲信息:获取到歌曲播放页的url 和 歌曲名
work_list = soup.find('div', class_='userPage-tab-content userPage-tab-active-content') song_lists = work_list.find_all('li') for song in song_lists:# 找到歌曲播放页面的urlsong_url = song.find('a')['href']song_url = 'http://changba.com' + song_urlsong_name = song.find('a').text[7:-29]
继续爬取播放页的url
图中audio标签后面跟的url其实就是歌曲的源文件链接,就是要得到的东西,但测试发现并不能直接爬到它
观察其组成,发现是固定的url + 歌曲的id + ‘.mp3’ 组成,因此选择获取歌曲的 id 再组出url
获取歌曲id
# 跳转到歌曲播放页面 res_song = requests.get(song_url, user_agent) soup_song = BeautifulSoup(res_song.text, 'html.parser') # 找到歌曲的id try:data_id = soup_song.find('body')['data-workid'] except Exception as e:print('下载失败', e)continue
组出歌曲音频文件的url,再去爬去该url的二进制数据,直接保存到本地文件即可
res_source_song = requests.get(source_url_song, user_agent)if res_source_song.status_code == 200:with open('./song/lxt' + song_name + '.mp3', 'wb') as song_f:song_f.write(res_source_song.content)print(song_name + ' 下载成功')time.sleep(1)else:print('下载失败')
结果展示
总结:
以上是我最简单的方法爬取唱吧歌曲的过程,目前只能爬取到有限的数据,具有以下两点明显的缺陷:
1. 只能爬取到首页默认显示的20首歌曲
2. 不是所有的歌曲源文件的url 都是由 固定的url + 歌曲的id + '.mp3’组成
下篇文章介绍了如何解决这两个问题。
python最简单的方法爬取唱吧歌曲相关推荐
- python爬虫之类的方法爬取一部小说
面向对象编程,爬取一部小说 ''' 面向对象编程 爬取17K小说网一部小说 ''' # 导入第三方库 import os import requests from lxml import etree ...
- python pandas的read_html方法爬取网页表格
要爬取的网页:网址·http://www.cnipa.gov.cn/zfwq/zftjyfx/1144737.htm 长这样的表格 爬取以上表格,保存为CSV格式. 代码实现: import pand ...
- python之简单爬虫(爬取豆瓣出版社)
环境准备: 1.python 3.0+ 2.豆瓣出版社网址 https://read.douban.com/provider/all ok,开始我们的实验 1.打开浏览器,输入网址,右击网页,查看网页 ...
- 简单的方法爬取b站dnf视频封面步骤解释
这随笔代码链接:http://www.cnblogs.com/yinghualuowu/p/8186375.html 首先我们要知道,一个分区封面显示到底在哪里可以找到. 很明显,查看审查元素并不能找 ...
- python简单网站爬虫-爬取北京7天最高、最低气温
python简单网站爬虫-爬取北京7天最高.最低气温 前置操作: 1.待爬取网站: 北京天气的网址: http://www.weather.com.cn/weather1d/101010100.sht ...
- Python爬虫之简单爬虫之爬取英雄联盟官网的英雄的皮肤
Python爬虫之简单爬虫之爬取英雄联盟官网的英雄的皮肤 文章目录 Python爬虫之简单爬虫之爬取英雄联盟官网的英雄的皮肤 背景:LOL这款游戏有着大量的玩家,这个游戏里面人们津津乐道的皮肤,每一款 ...
- python使用Cookie登录网页爬取信息(超简单)
python使用Cookie登录网页爬取信息(超简单) 因为工作原因,需要爬取一个医疗行业的网站的信息,而且目标网站还要登录才给你展现完整的页面,所以有了本文-- 看了好多爬取需要登录的博客,过程不表 ...
- Python爬虫项目分享二:《爬取周杰伦的歌曲评论》
python爬取周杰伦的歌曲评论 偶得一不错的爬虫教程,现博客分享,想要获取完整教程,加V:ff17328081445.文章为系列文章,持续更新,欢迎关注. 浏览器分析网页 #歌曲评价地址 https ...
- 超简单的图片爬取项目,复制粘贴就能用,批量爬取动漫图片。(保姆教程,可根据需要修改URL)
各位未来国家栋梁们好啊~相信栋梁们经常需要在网络上寻找各种资源,作为二次元的必备精神食粮,图片资源那是必不可少!在这里用python写了一个超简单的图片爬取小项目~话不多说,附上源码!(有用的话点个赞 ...
最新文章
- 从构建分布式秒杀系统聊聊限流特技
- Activity栈管理(一):Activity任务栈模型
- 机器学习(MACHINE LEARNING) 【周志华版-”西瓜书“-笔记】 DAY10-降维和度量学习
- python压缩包怎么安装-python – 如果安装的模块在zip文件的顶层添...
- 直方图应用:直方图均衡化,直方图匹配,对比直方图
- python class函数报错_Python multiprocess pool模块报错pickling error问题解决方法分析
- 用C#+Selenium+ChromeDriver 爬取网页,完美模拟真实的用户浏览行为
- Docverter – 文本文件轻松转换为 PDF,Docx 和 ePub 文件
- (王道408考研操作系统)第一章计算机系统概述-第一节5:系统调用
- TreeView 操作应用
- 逐步创建ASP.NET Core 2.2应用程序
- php put怎么接收文件,php,restful_PHP PUT方式传文件的话,如何获取文件内容呢 ?,php,restful,http - phpStudy...
- 高频电子线路实验 03 - | 环形混频与直接调频
- 奶奶常说,黑白照片看的不清晰,还好我会Python,分分钟给她变成彩色的~
- U盘格式化后容量变小
- JS监听鼠标滑轮事件
- 所有人体胸部和下半身各部位的英语单词
- 忍者必须死显示无法连接服务器,忍者必须死为什么不能登录
- Python实现画图软件功能
- Java基础概念——变量联系-计算公交车的人数
热门文章
- Leetcode 69 Sqrt(x)
- 红外对射探测器的安装方法
- 一些可以查询IP地理位置、身份证所在地、手机归属地的接口
- 通讯行业SRM供应商协同管理系统:平台数据信息共享,助力供应商系统降本增效
- python for everybody作业和测试答案_Python语言编写有趣练习题!
- CCD(电荷耦合器件)结构和原理
- RecycleView与TabLayout联动展示更多功能列表页面的实现
- Fine-tuning Convolutional Neural Networks for Biomedical Image Analysis: Actively and Incrementally
- SCU 4438:Censor
- Delph EXE 转DLL