本次爬虫目标网址为网易云歌单页面

https://music.163.com/#/discover/playlist

代码实现以下功能

1.按输入的歌单类型获取该类型歌单封面,并输出歌单名

2.可通过在headers中加上账户cookie获取系统为该账户推荐的歌单封面(每个账户系统推荐的歌单均不同)

设计思路简略为输入歌单类型后,循环获取该类型歌单每一页的地址,再根据该地址循环获取该页下每个歌单的图片地址,并将图片分辨率恢复正常大小后下载保存到本地

代码难点如下

1.页面嵌套,需要先获取输入类型的歌单网址,再逐个获取该页面每一页中的每一张封面图片,代码中使用两个大for循环获取每个歌单网址,使用两个小for循环分别获取最终歌单封面地址和歌单标题

2.需要将输入的歌单类型保存至变量后拼接至目标访问网址,输入的如果是中文字符还要进行编码后才能进行拼接,在代码中需要使用urllib.parse.quote函数进行编码

3.获取完一页的歌单封面后需要进行翻页获取下一页的歌单封面,那就必须了解歌单页码变化规律,我们观察前三页URL变化

可以看到只有offset每次加35,非常简单,代码中使用一个自增变量每次加35然后拼接至URL即可

4.要获取的是某个网易云音乐帐号下系统推荐的歌单封面,而不是未登录状态下一样口味的歌单,其实非常简单,只需要在headers中加入cookie即可,获取cookie信息需要先登录帐号,然后F12,点击network(网络),name选择第一个,如下图,

蓝色的就是cookie了,复制到代码的headers中即可

还有一些坑也提一下

1.比如网易云歌单网址如下图

可以看到网址中有 /# 字符,亲测如果不删掉该字符是爬取不到网易云的数据的,.com后面直接接上/discover就可以了

2.最终我们获取到的歌单封面网址是这样的

http://p2.music.126.net/A514bNqtuivvuppEiXkibQ==/1407374889022377.jpg?param=140y140

访问该网址后可以看到图片分辨率非常低,只有140*140,看到网址后面的 ?param=140y140 没有,只要去除它就可以得到原始分辨率的图片了

3.最终获取的标题中会有很多空格,使用 replace(' ','')  函数即可将第一个单引号中的字符替换为第二个单引号中的字符

下面贴出更新后代码

#-*- coding: UTF-8 -*-
from bs4 import BeautifulSoup
import requests
import urllibdef getimg(str_1):str_2 = urllib.parse.quote(str_1) # URL只允许一部分ASCII字符,其他字符(如汉字)是不符合标准的,此时就要使用进行urllib.parse.quote函数进行编码print('字符<%s>转换后为<%s>'%(str_1,str_2),'\n','开始下载...')url='https://music.163.com/discover/playlist/?cat='+str(str_1)+'&limit=35&offset='  # URL拼接上输入且转换后的字符headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6788.400 QQBrowser/10.3.2864.400','Cookie':'_ntes_nnid=3e47e957c94d56ea3714f5bbf38597bf,1532695901743; _ntes_nuid=3e47e957c94d56ea3714f5bbf38597bf; usertrack=ezq0o1u8xfxwfillERRvAg==; _ga=GA1.2.1172819859.1539098110; __oc_uuid=ed599b70-d8d0-11e8-9a49-4d470420dcfb; __utma=187553192.1172819859.1539098110.1540525248.1540525248.1; __utmz=187553192.1540525248.1.1.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; _iuqxldmzr_=32; WM_TID=h3Hc9Pi6g75NPzMgDUVPDJ1qsRwbLDGK; __utma=94650624.356059233.1532951546.1536057789.1540790360.6; __utmz=94650624.1535085812.4.4.utmcsr=liuli.eu|utmccn=(referral)|utmcmd=referral|utmcct=/wp/tag/cosplay/page/2; vinfo_n_f_l_n3=954c8f473076175e.1.0.1545043421942.0.1545043443642; KAOLA_ACC=476ab7cd25c6f5d0f8007a58c2deaedc@tencent.163.com; mail_psc_fingerprint=9b38f4d5ca4a4df17bd64ac8b1e7826d; nts_mail_user=15770570072@163.com:-1:1; WM_NI=LL%2BmyxKQSMrwVt%2BCZj5KpBZM7R3cAW6hH%2F1jc9FP0bbUUukFkDKTtXlcDrV5rcINIyT%2BQJw3fDklKb0nm0E6QnS8QIM%2FuxRlstMbP3Wc3IoRI7Tii2EG5NMwWS9GAryLOGU%3D; WM_NIKE=9ca17ae2e6ffcda170e2e6ee98f46a88e9f9a3b54eb1bc8fa6c54f869a8eaab73cb8b2bfbbbb5393bfab91f12af0fea7c3b92a9094e58efc74898f9daef17d96ace5a4d962f795c0a3d947f58efd84c45df6b888d0b462a1e78ab1b36aa28b9b96ea4ea99c85b5f754b0bd8c93d53fb2bd87afcc7398f59fabf639a69ca58dca6af4b2a3d1c83e93b29dd9d4438ff1bb99d168b1ac8383d33995bdfdaaee5a8be99c8aec3a8799fbafd07d958df7a8c47abb9481a8d837e2a3; playerid=81146496; starttime=; NNSSPID=a776c92a33154c50b675beb7fe13044f; NTES_PASSPORT=1tAjSLmRjoF2OepbYQlVX5N_4tze4tCwri6.maC4yHO8zSAkzfcxNLMHisp95DIK.vrSb_TmzrrrCwncIb20PwdWiBY8TdcSPsHjXfAv87YfmEk.7MbJ9n2iKufg7nmnpqEELiCgX73mQBOdWx_sI4DCj4d.HkysDoF_8jPId.jr1xKvbzh.ijkHx; df=mail163_letter; playliststatus=visible; NTES_SESS=pLtesJlQwWLM2_F68fUmnLEF8d5Iv4cq_qQfCP7YFVvh_q13_H8IY.vDOfMQ2gatRiX5XcUpvCDC5p9npr7FCwYI2LBmEgb9FrtbQbQA4p1eGwFrOl.xFcmhlqQhSx5lH4dzhJtM6So72SWrCTXvPWH__g6Hn3Cj6hRVd.rFD4ScPWA.3fBB8g2..VT3Rf1.jGcy8bxHaIui8Vyp9MJZX.vk0; S_INFO=1553494481|0|1&65##|m15770570072; P_INFO=m15770570072@163.com|1553494481|0|mail163|00&99|CN&1553476190&mail163#CN&null#10#0#0|157072&1|kaola&mail163|15770570072@163.com; MUSIC_EMAIL_U=112871895ffcc9c558231ef8b14c72465053be85f4706fa68125a8c6b9f1c7089e11ed1b8eda0a668b868433afc35e6d2383765fb87ce1fef2f513a9c38b5dc7; JSESSIONID-WYYY=9G0H2Gt%5C%2BkEsnP%2BUTkJdbPA6O%5C%2F2w%2BlFnFTDDdBbzpJG13a%5CeCGdp%2F7U%2FoHCA8cE6jxegjO%5Ccc%2FZyXbS%2Bw%2Fe2FEtEwfIARUM1x7QGDnWEsSQYfZ%5CHPZAO1msgcS3TvPwqjnN1q2bsteorR3DEPNr6drhmAyqgc53bCq5i8pGz6HoPk2H%3A1553497555044; MUSIC_U=e4ace7b13afdd88161175bda1c0914451762803785e1030d4312dda6e71aff68ca2d83fe0a175eb59e0eb32aa5fb495e8bafcdfe5ad2b092; __remember_me=true; __csrf=60e2fad5dc1d688abf984595f6a277e1',}page_num=0      # 歌单翻页变量img_num=0       # 图片命名变量path = 'G:/爬虫/网易云1/'            # 定义存储路径for flag in range(0,38):            # 歌单最大页码为38页,故循环最多38次link = url + str(page_num)      # URL拼接上自增变量即可实现歌单翻页page_num+=35                    # 每进入下一页URL中 offset 加35page = requests.get(link , headers = headers)               # 使用requests库直接获取页面信息soup = BeautifulSoup(page.text,'lxml')                      # 使用BeautifulSoup库提取page中的数据div = soup.find('div',class_='g-bd')                        # 获取页面中所有div标签中class为 g-bd 的数据div_1 = div.find_all('div',class_='u-cover u-cover-1')       # 原理同上,获取歌单图片和歌单标题数据for a in div_1:img_num+=1img = a.find_all('img')                 # 获取歌单封面所在标签title = a.find_all('a',class_='msk')    # 获取歌单标题所在标签for b in img:                           # 获取最终图片链接img_src = b.get('src')              # 获取歌单图片链接img_src = img_src[:-14]             # 图片链接后14个字符是限制图片分辨率用的,去除后14个字符即可获得原始分辨率图片for c in title:                         # 获取最终标题final_title = c.get('title').replace(' ','')       # 获取歌单标题,标题中有大量空格,使用replace函数去除urllib.request.urlretrieve(img_src, path + str(img_num) + '.jpg')       #开始保存至本地!print('(第%d张)专辑:<<%s>>图片下载成功'%(img_num,final_title))print('下载完毕!总计下载%d张图片'%(img_num))
print(' 语种','\n',
' 华语 | 欧美 | 日语 | 韩语 | 粤语 | 小语种 |','\n',
'风格','\n',
' 流行 | 摇滚 | 民谣 | 电子 | 舞曲 | 说唱| 轻音乐 | 爵士 | 乡村 | R&B/Soul | 古典 | 民族 | 英伦 | 金属 | 朋克 | 蓝调 ','\n',
' 雷鬼 | 世界音乐 | 拉丁 | 另类/独立| New Age| 古风| 后摇| Bossa Nova|','\n',
'场景','\n',
' 清晨 | 夜晚 | 学习 | 工作 | 午休 | 下午茶 | 地铁 | 驾车 | 运动 | 旅行 | 散步 | 酒吧 |','\n',
'情感','\n',
' 怀旧 | 清新 | 浪漫 | 性感 | 伤感 | 治愈 | 放松 | 孤独 | 感动 | 兴奋 | 快乐 | 安静 | 思念 |','\n',
'主题','\n',
' 影视原声 | ACG | 儿童 | 校园 | 游戏 | 70后 | 80后 | 90后 | 网络歌曲 | KTV | 经典 | 翻唱 | 吉他 | 钢琴 | 器乐 | 榜单 | 00后 |')if __name__ == '__main__':Fun=input('请输入想要下载歌单图片的类型:')getimg(Fun)

更新前代码

#-*- coding: UTF-8 -*-
from bs4 import BeautifulSoup
import requests
import urllibdef getimg(type2):type3 = urllib.parse.quote(type2)print('字符<%s>转换后为<%s>'%(type2,type3),'\n','开始下载...')url='https://music.163.com/discover/playlist/?cat='+str(type3)+'&limit=35&offset='headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6788.400 QQBrowser/10.3.2864.400','Cookie':'_ntes_nnid=3e47e957c94d56ea3714f5bbf38597bf,1532695901743; _ntes_nuid=3e47e957c94d56ea3714f5bbf38597bf; usertrack=ezq0o1u8xfxwfillERRvAg==; _ga=GA1.2.1172819859.1539098110; __oc_uuid=ed599b70-d8d0-11e8-9a49-4d470420dcfb; __utma=187553192.1172819859.1539098110.1540525248.1540525248.1; __utmz=187553192.1540525248.1.1.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; _iuqxldmzr_=32; WM_TID=h3Hc9Pi6g75NPzMgDUVPDJ1qsRwbLDGK; __utma=94650624.356059233.1532951546.1536057789.1540790360.6; __utmz=94650624.1535085812.4.4.utmcsr=liuli.eu|utmccn=(referral)|utmcmd=referral|utmcct=/wp/tag/cosplay/page/2; vinfo_n_f_l_n3=954c8f473076175e.1.0.1545043421942.0.1545043443642; KAOLA_ACC=476ab7cd25c6f5d0f8007a58c2deaedc@tencent.163.com; mail_psc_fingerprint=9b38f4d5ca4a4df17bd64ac8b1e7826d; nts_mail_user=15770570072@163.com:-1:1; WM_NI=LL%2BmyxKQSMrwVt%2BCZj5KpBZM7R3cAW6hH%2F1jc9FP0bbUUukFkDKTtXlcDrV5rcINIyT%2BQJw3fDklKb0nm0E6QnS8QIM%2FuxRlstMbP3Wc3IoRI7Tii2EG5NMwWS9GAryLOGU%3D; WM_NIKE=9ca17ae2e6ffcda170e2e6ee98f46a88e9f9a3b54eb1bc8fa6c54f869a8eaab73cb8b2bfbbbb5393bfab91f12af0fea7c3b92a9094e58efc74898f9daef17d96ace5a4d962f795c0a3d947f58efd84c45df6b888d0b462a1e78ab1b36aa28b9b96ea4ea99c85b5f754b0bd8c93d53fb2bd87afcc7398f59fabf639a69ca58dca6af4b2a3d1c83e93b29dd9d4438ff1bb99d168b1ac8383d33995bdfdaaee5a8be99c8aec3a8799fbafd07d958df7a8c47abb9481a8d837e2a3; playerid=81146496; starttime=; NNSSPID=a776c92a33154c50b675beb7fe13044f; NTES_PASSPORT=1tAjSLmRjoF2OepbYQlVX5N_4tze4tCwri6.maC4yHO8zSAkzfcxNLMHisp95DIK.vrSb_TmzrrrCwncIb20PwdWiBY8TdcSPsHjXfAv87YfmEk.7MbJ9n2iKufg7nmnpqEELiCgX73mQBOdWx_sI4DCj4d.HkysDoF_8jPId.jr1xKvbzh.ijkHx; df=mail163_letter; playliststatus=visible; NTES_SESS=pLtesJlQwWLM2_F68fUmnLEF8d5Iv4cq_qQfCP7YFVvh_q13_H8IY.vDOfMQ2gatRiX5XcUpvCDC5p9npr7FCwYI2LBmEgb9FrtbQbQA4p1eGwFrOl.xFcmhlqQhSx5lH4dzhJtM6So72SWrCTXvPWH__g6Hn3Cj6hRVd.rFD4ScPWA.3fBB8g2..VT3Rf1.jGcy8bxHaIui8Vyp9MJZX.vk0; S_INFO=1553494481|0|1&65##|m15770570072; P_INFO=m15770570072@163.com|1553494481|0|mail163|00&99|CN&1553476190&mail163#CN&null#10#0#0|157072&1|kaola&mail163|15770570072@163.com; MUSIC_EMAIL_U=112871895ffcc9c558231ef8b14c72465053be85f4706fa68125a8c6b9f1c7089e11ed1b8eda0a668b868433afc35e6d2383765fb87ce1fef2f513a9c38b5dc7; JSESSIONID-WYYY=9G0H2Gt%5C%2BkEsnP%2BUTkJdbPA6O%5C%2F2w%2BlFnFTDDdBbzpJG13a%5CeCGdp%2F7U%2FoHCA8cE6jxegjO%5Ccc%2FZyXbS%2Bw%2Fe2FEtEwfIARUM1x7QGDnWEsSQYfZ%5CHPZAO1msgcS3TvPwqjnN1q2bsteorR3DEPNr6drhmAyqgc53bCq5i8pGz6HoPk2H%3A1553497555044; MUSIC_U=e4ace7b13afdd88161175bda1c0914451762803785e1030d4312dda6e71aff68ca2d83fe0a175eb59e0eb32aa5fb495e8bafcdfe5ad2b092; __remember_me=true; __csrf=60e2fad5dc1d688abf984595f6a277e1',}t=0i=0path = 'G:/爬虫/网易云1/'for flag in range(0,38):link = url + str(t)t+=35page = urllib.request.Request(link,headers = headers)html = urllib.request.urlopen(page).read()soup = BeautifulSoup(html,'html.parser')div = soup.find('div',class_='g-bd')div1 = div.find_all('div',class_='u-cover u-cover-1')       #获取到歌单图片和歌单标题所在数据for a in div1:i+=1img = a.find_all('img')     #获取到歌单封面所在标签title = a.find_all('a',class_='msk')     #获取到歌单标题所在标签for b in img:img_src = b.get('src')      #获取到歌单封面链接img_src = img_src[:-14]for c in title:final_title = c.get('title').replace(' ','')       #获取到歌单标题urllib.request.urlretrieve(img_src, path + str(i) + '.jpg')print('(第%d张)专辑:<<%s>>图片下载成功'%(i,final_title))print('下载完毕!总计下载%d张图片'%(i))
print(' 语种','\n',
' 华语 | 欧美 | 日语 | 韩语 | 粤语 | 小语种 |','\n',
'风格','\n',
' 流行 | 摇滚 | 民谣 | 电子 | 舞曲 | 说唱| 轻音乐 | 爵士 | 乡村 | R&B/Soul | 古典 | 民族 | 英伦 | 金属 | 朋克 | 蓝调 ','\n',
' 雷鬼 | 世界音乐 | 拉丁 | 另类/独立| New Age| 古风| 后摇| Bossa Nova|','\n',
'场景','\n',
' 清晨 | 夜晚 | 学习 | 工作 | 午休 | 下午茶 | 地铁 | 驾车 | 运动 | 旅行 | 散步 | 酒吧 |','\n',
'情感','\n',
' 怀旧 | 清新 | 浪漫 | 性感 | 伤感 | 治愈 | 放松 | 孤独 | 感动 | 兴奋 | 快乐 | 安静 | 思念 |','\n',
'主题','\n',
' 影视原声 | ACG | 儿童 | 校园 | 游戏 | 70后 | 80后 | 90后 | 网络歌曲 | KTV | 经典 | 翻唱 | 吉他 | 钢琴 | 器乐 | 榜单 | 00后 |')
type1=input('请输入想要下载歌单图片的类型:')
getimg(type1)

运行效果

Python爬虫获取网易云歌单封面(带Cookie)相关推荐

  1. Python爬虫之网易云歌单音频爬取(解决urlretrieve爬取文件不能播放问题)

    网易云歌单音频爬取 写在前面:最近学习爬虫,对小说和图片都进行过简单爬取,所以打算爬取音频,但是其中遇到点问题也解决了,写下博客记录并希望对大家也有帮助. 爬取对象:对于目前主流的几个音频播放网站,我 ...

  2. 【python爬虫】网易云歌单下载(scrapy+selenium)

    我又滚回来更新了,这一次我们的目标是网易云音乐,想要通过输入歌单的链接,然后把整个歌单的歌曲都下载下来,说做就做,看看这一次有会遇见怎样的问题把. 需要注意的点: 这一次使用的框架仍然是scrapy, ...

  3. QML <2> Canvas 自定义绘制 网易云歌单封面实现

    QML <2> Canvas 自定义绘制 网易云歌单封面实现 前言 基于QML 实现 网易云歌单封面,参考图如下: 实现图如下: 一.背景图 最底层为Rectangle ,图片用Anima ...

  4. 运用Python——爬取网易云歌单的全部歌曲热评_爬虫的简单应用

    导航 ·运用Python--爬虫_网易云音乐热评 ·运用Python--游戏_四子棋_劳拉下棋 文章目录 导航 1.展示截图 2.代码 3.分析 常量的定义.界面设计 依次爬取歌曲信息 创建表格 爬取 ...

  5. 爬虫python代码网易云_爬虫实战(二) 用Python爬取网易云歌单

    最近,博主喜欢上了听歌,但是又苦于找不到好音乐,于是就打算到网易云的歌单中逛逛 本着 "用技术改变生活" 的想法,于是便想着写一个爬虫爬取网易云的歌单,并按播放量自动进行排序 这篇 ...

  6. python爬虫实例网易云-爬虫实战(二) 用Python爬取网易云歌单

    最近,博主喜欢上了听歌,但是又苦于找不到好音乐,于是就打算到网易云的歌单中逛逛 本着 "用技术改变生活" 的想法,于是便想着写一个爬虫爬取网易云的歌单,并按播放量自动进行排序 这篇 ...

  7. 爬虫实战(二) 用Python爬取网易云歌单

    最近,博主喜欢上了听歌,但是又苦于找不到好音乐,于是就打算到网易云的歌单中逛逛 本着 "用技术改变生活" 的想法,于是便想着写一个爬虫爬取网易云的歌单,并按播放量自动进行排序 这篇 ...

  8. Python爬虫获取网易云音乐 我的喜欢歌单 歌曲数据

    需求:突然奇想,获取网易云音乐 我的喜欢 歌单音乐数据 获取歌曲详情 如标题,歌手,时长,专辑等等 思路: 爬虫请求url 获取数据,找到对的链接请求就成功了一半,查看返回数据,然后保存数据(歌曲+歌 ...

  9. python爬取网易云歌单

    写在前面: 我的博客已迁移至自建服务器:博客传送门,CSDN博客暂时停止,如有机器学习方面的兴趣,欢迎来看一看. 此外目前我在gitHub上准备一些李航的<统计学习方法>的实现算法,目标将 ...

  10. Python 大作业 网易云歌单数据分析及可视化(参考多位博主文章)

    目录 项目概述 1.1项目来源 1.2需求描述 数据获取 2.1数据源的选取 2.2数据的获取 2.2.1 设计 2.2.2 实现 2.2.3 效果 数据预处理 3.1 设计 3.2 实现 3.3 效 ...

最新文章

  1. usaco The Perfect Stall(二分匹配模板)
  2. seaborn系列 (2) | 散点图scatterplot()
  3. linux文件夹加密访问,技术|Linux系统上用encfs创建和管理加密文件夹
  4. java消息通信_原生 Java 客户端进行消息通信
  5. linux内核红宝书,Solaris 10红宝书 9.3
  6. 【图文解释】快速排序算法
  7. c++ STL 工程实践的15条建议
  8. Flask笔记-使用flask-sqlacodegen自动生成model
  9. 50 行代码教你爬取猫眼电影 TOP100 榜所有信息
  10. 2019年新年第一天,我也制定一下2019年计划,
  11. 开源视频处理工具Shotcut的用法: 剪切、合并、增加背景音乐、添加字幕、 插入视频、图片转视频并加背景音乐、制作电子相册
  12. python小明爬楼梯_Python两种方法求解登楼梯问题(京东2016笔试题)
  13. python爬虫登录微博_[突如其来]python爬虫模拟登录微博
  14. html使用第三方标签,不使用第三方框架获取html页面某个标签的某个属性值
  15. 如何在win11上运行VC6.0
  16. 用真金做的电路板——金手指
  17. 网页内嵌B站视频,隐藏相关控件
  18. 摩羯男喜欢你的一些表现
  19. 计算机数据传输9600波特率,波特率9600每秒的传输字节 传输一个字节要多久-与非网...
  20. supervisord启动子程序报错Exited too quickly (process log may have details)解决

热门文章

  1. Matlab中text函数在图像中固定位置添加信息的用法
  2. 如何使用K8S实现自动化部署
  3. iOS----------关于UDID和UUID的一些理解
  4. BZOJ2109 [Noi2010]Plane 航空管制
  5. win10双显卡开机黑屏时间长
  6. JAVA相关基础知识
  7. ASA入门实验之NAT
  8. ECharts设置双x轴
  9. 排列(Permutation) 组合(Combination)
  10. 微信小程序 黑色背景 页面跳转闪屏