PyCharm下python爬虫准备

打开pycharm

点击设置

点击项目解释器,再点击右边+号

搜索相关库并添加,例如:requests

喜马拉雅全网递归下载

打开谷歌/火狐浏览器,按F12打开开发者工具—>选择【网络】

编辑器浏览器输入: https://www.ximalaya.com/yinyue/  点击【摇滚】

发现弹出新的URL:https://www.ximalaya.com/yinyue/yaogun/    [汉字转换拼音后的URL访问]

点击进入任意一个专辑[未播放]

点击播放音乐[播放中]

[是一个json格式的URL]访问搜索界面的源代码,查找albumId,通过这些albumid获取音频文件的url

https://www.ximalaya.com/revision/play/album?albumId=16372952&pageNum=1&sort=-1&pageSize=30

最后使用函数urllib.request.urlretrieve()下载音乐即可

附源码:

import re
import os
import json
import requests
import urllib
from urllib import request
from pypinyin import lazy_pinyinclass XimaLaya(object):# 模拟浏览器操作def __init__(self):self.header = {"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0'}# 第一步: 根据输入的汉字转换为拼音def han_pinyin(self, hanzi):pin = lazy_pinyin(hanzi)   # 汉转拼音pin = "".join(pin)       # 去除空格return pin               # 返回拼音# 第二步: 根据REST格式去访问喜马拉雅,获取页面的HTMLdef getHtml(self, pinyin):url = 'https://www.ximalaya.com/yinyue/' + pinyinprint("访问的网站是: " + url)html = requests.get(url, headers=self.header)# apparent_encoding通过调用chardet.detect()来识别文本编码,有些消耗计算资源html.encoding = html.apparent_encoding# html.encoding = 'utf8'  --> 直接改为UTF8也行with open('D:\XiMaLaya\html\\' + str(pinyin + '.html'), 'a', encoding='utf-8') as f:f.write(html.text)return html# 第三步:根据页面的内容获取对应歌单的albumId的值def getAlbumId(self, html):albumIdAll = re.findall(r'"albumId":(.*)', (html).text)  # 利用正则进行匹配,获取专辑IDprint("专辑信息", albumIdAll)with open('D:\XiMaLaya\\albumIdAll\\' + str('albumIdAll.txt'), 'a', encoding='utf-8') as f:for x in albumIdAll:f.write(str(x))myList = []url3 = []for i in (albumIdAll[:1]):# 获取对应专辑ID的首页url2 = 'https://www.ximalaya.com/revision/play/album?albumId=' + iprint(url2)# 进入对应专辑ID的首页信息html2 = requests.get(url2.split(',')[0], headers=self.header)# 含有下载URL的集合# src   "http://audio.xmcdn.com/group12/M03/2C/AA/wKgDW1WJ7GqxuItqAB8e1LXvuds895.m4a"url3 = (re.findall(r'"src":"(.*?)"', (html2).text))# 记录信息用的myList.append('获取对应专辑ID的首页\r\n' + url2 + '\n---------------------------------------')myList.append('含有下载URL的集合\r\n' + html2.text + '\n---------------------------------------')myList.append('下载专辑的URL集合\r\n' + str(url3) + '\n---------------------------------------')with open('D:\XiMaLaya\\albumIdAll\\' + str('hhh.txt'), 'a', encoding='utf-8') as f:f.write(json.dumps(myList))print('done')return url3    # 下载专辑的URL集合# 第四步: 获取专辑名def getTitle(self, html):t = re.findall(r'"title":"(.*?)"', (html).text)  # 获取titile(歌名)的值with open('D:\XiMaLaya\\albumIdAll\\' + str('albumId_Name.txt'), 'a', encoding='utf-8') as f:f.write(str(t))return t# 第五步: 下载歌曲def downLoad(self, url, title):n = 0for i in url:try:urllib.request.urlretrieve(i, 'D:\XiMaLaya\\'+str(title[n]+'.m4a'))print(str(title[n]), '...【下载成功】')n = n + 1except:print(str(title[n]) + "...【下载失败】")if __name__ == '__main__':fm = XimaLaya()# 输入需要下载的歌曲类型str1 = fm.han_pinyin("摇滚")# 获取对应歌曲类型的首页信息html = fm.getHtml(str1)# 获取歌曲类型的首页里面的专辑名称title = fm.getTitle(html)# 获取歌曲类型的首页里面的专辑IDurl3 = fm.getAlbumId(html)# 下载对应曲目fm.downLoad(url3, title)

喜马拉雅单一专辑的下载

打开谷歌/火狐浏览器,按F12打开开发者工具—>选择【网络】

编辑器浏览器输入: https://www.ximalaya.com/yinyue/12521114/

点击计入音乐[未播放前]<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

点击进入音乐[播放中]

[是一个json格式的URL]访问搜索界面的源代码,查找albumId,通过这些albumid获取音频文件的url

https://www.ximalaya.com/revision/play/album?albumId=12521114&pageNum=1&sort=-1&pageSize=30

最后使用函数urllib.request.urlretrieve()下载音乐即可

附源码:

import re
import json
import requests
import urllib
from urllib import requestclass XimaLaya(object):# 模拟浏览器操作def __init__(self):self.header = {"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0'}# 第一步:根据REST格式去访问喜马拉雅,获取页面的HTMLdef getHtml(self, pinyin):url = 'https://www.ximalaya.com/yinyue/' + pinyinprint("访问的网站是: " + url)html = requests.get(url, headers=self.header)# apparent_encoding通过调用chardet.detect()来识别文本编码,有些消耗计算资源html.encoding = html.apparent_encoding# html.encoding = 'utf8'  --> 直接改为UTF8也行print(html)return html# 第二步:根据页面的内容获取对应歌单的albumId的值def getAlbumId(self, html):albumIdAll = re.findall(r'"albumId":(.*)', (html).text)  # 利用正则进行匹配,获取专辑IDprint("专辑信息", albumIdAll)with open('D:\XiMaLaya\\albumIdAll\\' + str('albumIdAll.txt'), 'a', encoding='utf-8') as f:for x in albumIdAll:f.write(str(x))myList = []url3 = []for i in (albumIdAll[:1]):# 获取对应专辑ID的首页url2 = 'https://www.ximalaya.com/revision/play/album?albumId=' + iprint(url2)# 进入对应专辑ID的首页信息html2 = requests.get(url2.split(',')[0], headers=self.header)# 含有下载URL的集合# src   "http://audio.xmcdn.com/group12/M03/2C/AA/wKgDW1WJ7GqxuItqAB8e1LXvuds895.m4a"url3 = (re.findall(r'"src":"(.*?)"', (html2).text))# 记录信息用的myList.append('获取对应专辑ID的首页\r\n' + url2 + '\n---------------------------------------')myList.append('含有下载URL的集合\r\n' + html2.text + '\n---------------------------------------')myList.append('下载专辑的URL集合\r\n' + str(url3) + '\n---------------------------------------')with open('D:\XiMaLaya\\albumIdAll\\' + str('hhh.txt'), 'a', encoding='utf-8') as f:f.write(json.dumps(myList))print('done')return url3    # 下载专辑的URL集合# 第三步: 获取专辑名def getTitle(self, html):t = re.findall(r'"title":"(.*?)"', (html).text)  # 获取titile(歌名)的值with open('D:\XiMaLaya\\albumIdAll\\' + str('albumId_Name.txt'), 'a', encoding='utf-8') as f:f.write(str(t))return t# 第四步: 下载歌曲def downLoad(self, url, title):n = 0for i in url:try:urllib.request.urlretrieve(i, 'D:\XiMaLaya\\'+str(title[n]+'.m4a'))print(str(title[n]), '...【下载成功】')n = n + 1except:print(str(title[n]) + "...【下载失败】")if __name__ == '__main__':fm = XimaLaya()# 输入需要下载的歌曲URLstr1 = "yinyue/12521114/"# 获取对应歌曲类型的首页信息html = fm.getHtml(str1)# 获取歌曲类型的首页里面的专辑名称title = fm.getTitle(html)# 获取歌曲类型的首页里面的专辑IDurl3 = fm.getAlbumId(html)# 下载对应曲目fm.downLoad(url3, title)

转载于:https://www.cnblogs.com/ftl1012/p/9611334.html

Python实例---爬取下载喜马拉雅音频文件相关推荐

  1. python自动搜索爬取下载文件-python批量爬取下载抖音视频

    本文实例为大家分享了python批量爬取下载抖音视频的具体代码,供大家参考,具体内容如下 import os import requests import re import sys import a ...

  2. 使用Python爬虫示例-自动下载网页音频文件

    使用Python爬虫示例-自动下载网页音频文件 使用库 目标网站 获取并解析网页源代码 访问下载链接 使用库 requests 用来发送http请求. BeautifulSoup 一个灵活又方便的网页 ...

  3. python爬虫,爬取下载图片

    python爬虫,爬取下载图片 分别引入以下三个包 from urllib.request import urlopen from bs4 import BeautifulSoup import re ...

  4. 用python 对蜻蜓fm下载的音频文件进行批量还原文件名

    对蜻蜓fm下载的音频文件进行批量还原文件名 小孩爱听蜻蜓fm的故事,可是懒得老买会员(囊中羞涩).干脆就想把音频文件下载回来慢慢听. 蜻蜓fm的安卓app可以下载音频文件保存到本地电脑里,便于临时会员 ...

  5. Python 爬虫下载喜马拉雅音频文件

    阅读文本大概需要 5 分钟 学习,是一个长期的过程.学习的方式也是有很多种的,在家里时间有空闲时间的话可以选择读书,如今在手机上看电子书也方便.pk哥最近看电子书比较多,感觉自己的视力明显下降了.停下 ...

  6. Python爬虫——爬取股票信息生成csv文件

    最近在学习数据分析,就想着弄一份csv文件练手用,于是就爬取了股票信息,生成csv文件 爬取的网址:http://quote.eastmoney.com/ztb/detail#type=ztgc 网址 ...

  7. python爬取素材图片代码_基于Python爬取素材网站音频文件

    基本环境配置 python 3.6 pycharm requests parsel 相关模块pip安装即可 目标网页 请求网页 import requests url = 'https://www.t ...

  8. python爬取收费素材_基于Python爬取素材网站音频文件

    基本环境配置SUW免费资源网 python 3.6 pycharm requests parsel 相关模块pip安装即可SUW免费资源网 SUW免费资源网 目标网页SUW免费资源网 SUW免费资源网 ...

  9. 用python将爬取内容写入csv文件中用excel打开后的乱码问题

    在平时的数据采集中我们经常会将一些数据存入csv文件,但是有时候用excel打开csv文件会发现乱码. 可能有的人会问为什么不直接将数据写去excel中,而是先写入csv然后又用excel打开,不嫌麻 ...

最新文章

  1. c++中的public,protected,private
  2. 【每日一题】502. IPO
  3. IDEA中Project 和 Module的区别
  4. 银河麒麟可执行文件双击,闪退问题
  5. Windows Form -----内容(2)
  6. 牛客练习赛43 Tachibana Kanade Loves Probability(快速幂)
  7. 【最新合集】IDEA 快捷键整理
  8. laytpl遍历实体列表_Layui数据表格之获取表格中所有的数据方法
  9. C++ 从文件夹中读取文件
  10. SkyEye:航空发动机控制系统仿真
  11. ssh 使用公钥登录客户端设置
  12. jQuery选择器整理+知识总结
  13. sessionStorage跨标签取值
  14. 2018-2019-1 20165323《信息安全系统设计基础》第一周学习总结
  15. LeetCode11 盛最多水的容器
  16. 远离魔咒,见微知著,打造崭新的罗浮宫
  17. 学计算机进中央电视台,央视评中科院博士论文致谢走红 从山坳穷学生到计算机博士...
  18. 十年磨一剑,你要的低代码平台在这里
  19. python当前时间减一年_python当前时间减一年_Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年......
  20. 初学Vue(全家桶)-第16天(vue2):插槽

热门文章

  1. 上了年纪的酒店,如何“鸟枪换炮”?
  2. GUID分区表的学习
  3. vscode Couldn‘t start client Rust Language Server
  4. 【WPF、UWP】搜索蓝牙设备
  5. resultful 风格
  6. python自制linux桌面,自己动手写Python实现Ubuntu自动切换壁纸
  7. 用户和组管理及思维导图
  8. 墒情监测站智慧农研高标准农田设施
  9. LiveData 机制详解
  10. flask python 上传图片或头像