第一个python爬虫–爬取唱吧歌曲

介绍:

  1. 最近刚开始学python做网页爬虫,试着写了一个简单的爬虫项目,用最简单的requests和Beautifulsoup实现。
  2. 唱吧支持导出歌曲,但需要money,网页版在线听只能点一首听一首,所以想通过爬虫将歌曲音频下载到本地
  3. 目标:尽可能多的爬取我的主页中的歌曲,下载保存到本地

实现步骤:

  1. 唱吧网页版,直接搜索用户名,来到用户主页,接下来我们就爬去该页的歌曲。

    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')
    
  2. 分析网页

    1. F12 打开源代码检查,在elements标签中先找到一条记录

    2. 可以看到很容易找到了,并且下面很多并列的 li 标签保存正是下面的其他歌曲

    3. 先找到他们的最小级共同父标签,接着查找所有的 li 标签

    4. 遍历每个 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]
      
    5. 继续爬取播放页的url

      图中audio标签后面跟的url其实就是歌曲的源文件链接,就是要得到的东西,但测试发现并不能直接爬到它

      观察其组成,发现是固定的url + 歌曲的id + ‘.mp3’ 组成,因此选择获取歌曲的 id 再组出url

    6. 获取歌曲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
      
    7. 组出歌曲音频文件的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最简单的方法爬取唱吧歌曲相关推荐

  1. python爬虫之类的方法爬取一部小说

    面向对象编程,爬取一部小说 ''' 面向对象编程 爬取17K小说网一部小说 ''' # 导入第三方库 import os import requests from lxml import etree ...

  2. python pandas的read_html方法爬取网页表格

    要爬取的网页:网址·http://www.cnipa.gov.cn/zfwq/zftjyfx/1144737.htm 长这样的表格 爬取以上表格,保存为CSV格式. 代码实现: import pand ...

  3. python之简单爬虫(爬取豆瓣出版社)

    环境准备: 1.python 3.0+ 2.豆瓣出版社网址 https://read.douban.com/provider/all ok,开始我们的实验 1.打开浏览器,输入网址,右击网页,查看网页 ...

  4. 简单的方法爬取b站dnf视频封面步骤解释

    这随笔代码链接:http://www.cnblogs.com/yinghualuowu/p/8186375.html 首先我们要知道,一个分区封面显示到底在哪里可以找到. 很明显,查看审查元素并不能找 ...

  5. python简单网站爬虫-爬取北京7天最高、最低气温

    python简单网站爬虫-爬取北京7天最高.最低气温 前置操作: 1.待爬取网站: 北京天气的网址: http://www.weather.com.cn/weather1d/101010100.sht ...

  6. Python爬虫之简单爬虫之爬取英雄联盟官网的英雄的皮肤

    Python爬虫之简单爬虫之爬取英雄联盟官网的英雄的皮肤 文章目录 Python爬虫之简单爬虫之爬取英雄联盟官网的英雄的皮肤 背景:LOL这款游戏有着大量的玩家,这个游戏里面人们津津乐道的皮肤,每一款 ...

  7. python使用Cookie登录网页爬取信息(超简单)

    python使用Cookie登录网页爬取信息(超简单) 因为工作原因,需要爬取一个医疗行业的网站的信息,而且目标网站还要登录才给你展现完整的页面,所以有了本文-- 看了好多爬取需要登录的博客,过程不表 ...

  8. Python爬虫项目分享二:《爬取周杰伦的歌曲评论》

    python爬取周杰伦的歌曲评论 偶得一不错的爬虫教程,现博客分享,想要获取完整教程,加V:ff17328081445.文章为系列文章,持续更新,欢迎关注. 浏览器分析网页 #歌曲评价地址 https ...

  9. 超简单的图片爬取项目,复制粘贴就能用,批量爬取动漫图片。(保姆教程,可根据需要修改URL)

    各位未来国家栋梁们好啊~相信栋梁们经常需要在网络上寻找各种资源,作为二次元的必备精神食粮,图片资源那是必不可少!在这里用python写了一个超简单的图片爬取小项目~话不多说,附上源码!(有用的话点个赞 ...

最新文章

  1. 从构建分布式秒杀系统聊聊限流特技
  2. Activity栈管理(一):Activity任务栈模型
  3. 机器学习(MACHINE LEARNING) 【周志华版-”西瓜书“-笔记】 DAY10-降维和度量学习
  4. python压缩包怎么安装-python – 如果安装的模块在zip文件的顶层添...
  5. 直方图应用:直方图均衡化,直方图匹配,对比直方图
  6. python class函数报错_Python multiprocess pool模块报错pickling error问题解决方法分析
  7. 用C#+Selenium+ChromeDriver 爬取网页,完美模拟真实的用户浏览行为
  8. Docverter – 文本文件轻松转换为 PDF,Docx 和 ePub 文件
  9. (王道408考研操作系统)第一章计算机系统概述-第一节5:系统调用
  10. TreeView 操作应用
  11. 逐步创建ASP.NET Core 2.2应用程序
  12. php put怎么接收文件,php,restful_PHP PUT方式传文件的话,如何获取文件内容呢 ?,php,restful,http - phpStudy...
  13. 高频电子线路实验 03 - | 环形混频与直接调频
  14. 奶奶常说,黑白照片看的不清晰,还好我会Python,分分钟给她变成彩色的~
  15. U盘格式化后容量变小
  16. JS监听鼠标滑轮事件
  17. 所有人体胸部和下半身各部位的英语单词
  18. 忍者必须死显示无法连接服务器,忍者必须死为什么不能登录
  19. Python实现画图软件功能
  20. Java基础概念——变量联系-计算公交车的人数

热门文章

  1. Leetcode 69 Sqrt(x)
  2. 红外对射探测器的安装方法
  3. 一些可以查询IP地理位置、身份证所在地、手机归属地的接口
  4. 通讯行业SRM供应商协同管理系统:平台数据信息共享,助力供应商系统降本增效
  5. python for everybody作业和测试答案_Python语言编写有趣练习题!
  6. CCD(电荷耦合器件)结构和原理
  7. RecycleView与TabLayout联动展示更多功能列表页面的实现
  8. Fine-tuning Convolutional Neural Networks for Biomedical Image Analysis: Actively and Incrementally
  9. SCU 4438:Censor
  10. Delph EXE 转DLL