python爬取周杰伦的歌曲清单

偶得一不错的爬虫教程,现博客分享,想要获取完整教程,加V:ff17328081445。文章为系列文章,持续更新,欢迎关注。

浏览器分析网页

#打开QQ音乐网址(首页搜索周杰伦)
https://y.qq.com/portal/search.html#page=1&searchid=1&remoteplace=txt.yqq.top&t=song&w=%E5%91%A8%E6%9D%B0%E4%BC%A6
#敲击键盘F12,然后点击Network,F5刷新网页。

Network面板的应用

从上往下,只看我圈起来的内容的话,它有四行信息。下面,我来为你介绍它。第1行的左侧,红色的圆钮是启用Network监控(默认高亮打开),灰色圆圈是清空面板上的信息。
右侧勾选框Preserve log,它的作用是“保留请求日志”。如果不点击这个,当发生页面跳转的时候,记录就会被清空。所以,我们在爬取一些会发生跳转的网页时,会点亮它。第2行,是对请求进行分类查看。我们最常用的是:ALL(查看全部)/XHR(仅查看XHR,我们等会重点讲它)/Doc(Document,第0个请求一般在这里),
有时候也会看看:Img(仅查看图片)/Media(仅查看媒体文件)/Other(其他)。最后,JS和CSS,则是前端代码,负责发起请求和页面实现;Font是文字的字体;而理解WS和Manifest,需要网络编程的知识,倘若不是专门做这个,你不需要了解。

什么是XHR?

在Network中,有一类非常重要的请求叫做XHR(当你把鼠标在XHR上悬停,你可以看到它的完整表述是XHR and Fetch)。这个,叫做Ajax技术(技术本身和爬虫关系不大,在此不做展开,你可以通过搜索了解)。应用这种技术,
好处是显而易见的——更新网页内容,而不用重新加载整个网页。又省流量又省时间的,何乐而不为。如今,比较新潮的网站都在使用这种技术来实现数据传输。只剩下一些特别老,或是特别轻量的网站,还在用老办法——加载新的内容,
必须要跳转一个新网址。

XHR的应用



#至此,我们已经在浏览器找到要爬取歌曲名。如何爬取?且看以下分析。


代码实现

#利用requests.get()访问这个链接,把这个字典下载到本地。然后去一层一层地读取,拿到歌曲名
#!/usr/bin/python3
import requests
# 引用requests库
res_music = requests.get('https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=60997426243444153&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=20&w=%E5%91%A8%E6%9D%B0%E4%BC%A6&g_tk=5381&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq.json&needNewCode=0')
# 调用get方法,下载这个字典
json_music = res_music.json()
# 使用json()方法,将response对象,转为列表/字典
# 我们在XHR里查看到的列表/字典,严格来说其实它不是列表/字典,它是json。需要转化,否则python无法提取数据。------------------------------------------------------------
#!/usr/bin/python3
import requests
# 引用requests库
res_music = requests.get('https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=60997426243444153&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=20&w=%E5%91%A8%E6%9D%B0%E4%BC%A6&g_tk=5381&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq.json&needNewCode=0')
# 调用get方法,下载这个字典
json_music = res_music.json()
# 使用json()方法,将response对象,转为列表/字典
list_music = json_music['data']['song']['list']
# 一层一层地取字典,获取歌单列表
for music in list_music:
# list_music是一个列表,music是它里面的元素print(music['name'])# 以name为键,查找歌曲名>>>>>>>>>>>>>>>>>>>>>>>>
说好不哭(with 五月天阿信)
一路向北
晴天
七里香
听妈妈的话
等你下课(with 杨瑞代)
稻香
告白气球
爱的飞行日记
搁浅
不能说的秘密
夜曲
青花瓷
以父之名
给我一首歌的时间
简单爱
半岛铁盒
彩虹
说好的幸福呢
轨迹------------------------------------------------------------
#如果对这个程序稍加延展,它就能拿到:歌曲名、所属专辑、播放时长,以及播放链接。因为这些信息都在那个XHR里。
#!/usr/bin/python3
import requests
# 引用requests库
res_music = requests.get('https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=60997426243444153&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=20&w=%E5%91%A8%E6%9D%B0%E4%BC%A6&g_tk=5381&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq.json&needNewCode=0')
# 调用get方法,下载这个字典
json_music = res_music.json()
# 使用json()方法,将response对象,转为列表/字典
list_music = json_music['data']['song']['list']
# 一层一层地取字典,获取歌单列表
for music in list_music:
# list_music是一个列表,music是它里面的元素print(music['name'])# 以name为键,查找歌曲名print('所属专辑:'+music['album']['name'])# 查找专辑名print('播放时长:'+str(music['interval'])+'秒')# 查找播放时长print('播放链接:https://y.qq.com/n/yqq/song/'+music['mid']+'.html\n\n')# 查找播放链接>>>>>>>>>>>>>>>>>>>>>>>>
说好不哭(with 五月天阿信)
所属专辑:说好不哭(with 五月天阿信)
播放时长:222秒
播放链接:https://y.qq.com/n/yqq/song/001qvvgF38HVc4.html一路向北
所属专辑:J III MP3 Player
播放时长:295秒
播放链接:https://y.qq.com/n/yqq/song/001xd0HI0X9GNq.html

Python爬虫项目分享一:《爬取周杰伦的歌曲清单》相关推荐

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

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

  2. python爬虫对炒股有没有用_使用python爬虫实现网络股票信息爬取的demo

    实例如下所示: import requests from bs4 import BeautifulSoup import traceback import re def getHTMLText(url ...

  3. python爬虫股票市盈率_使用python爬虫实现网络股票信息爬取的demo

    实例如下所示: import requests from bs4 import BeautifulSoup import traceback import re def getHTMLText(url ...

  4. Python爬虫实战一之爬取糗事百科段子

    点我进入原文 另外, 中间遇到两个问题: 1. ascii codec can't decode byte 0xe8 in position 0:ordinal not in range(128) 解 ...

  5. python爬虫(一)爬取豆瓣电影排名前50名电影的信息

    python爬虫(一)爬取豆瓣电影排名前50名电影的信息 在Python爬虫中,我们可以使用beautifulsoup对网页进行解析. 我们可以使用它来爬取豆瓣电影排名前50名的电影的详细信息,例如排 ...

  6. Python爬虫【二】爬取PC网页版“微博辟谣”账号内容(selenium同步单线程)

    专题系列导引   爬虫课题描述可见: Python爬虫[零]课题介绍 – 对"微博辟谣"账号的历史微博进行数据采集   课题解决方法: 微博移动版爬虫 Python爬虫[一]爬取移 ...

  7. Python爬虫【四】爬取PC网页版“微博辟谣”账号内容(selenium多线程异步处理多页面)

    专题系列导引   爬虫课题描述可见: Python爬虫[零]课题介绍 – 对"微博辟谣"账号的历史微博进行数据采集   课题解决方法: 微博移动版爬虫 Python爬虫[一]爬取移 ...

  8. Python爬虫【三】爬取PC网页版“微博辟谣”账号内容(selenium单页面内多线程爬取内容)

    专题系列导引   爬虫课题描述可见: Python爬虫[零]课题介绍 – 对"微博辟谣"账号的历史微博进行数据采集   课题解决方法: 微博移动版爬虫 Python爬虫[一]爬取移 ...

  9. 数据采集与存储案例——基于Python爬虫框架Scrapy的爬取网络数据与MySQL数据持久化

    此案例需要预先安装pymsql python3.7.4 scrapy2.7.1 一.安装scrapy框架 1.使用pip命令安装scrapy pip install scrapy 在这里下载太慢可以使 ...

  10. python爬虫实例之小说爬取器

    今天和大家分享一个爬取盗版小说的实例. 如今的网络小说可谓是百家齐放各领风骚,玄幻科幻穿越修仙都市- 各种套路看得我是心潮澎湃,笔者曾经也蛮喜欢看小说的,以前经常是拿着一台诺基亚看到深夜,第二天带着黑 ...

最新文章

  1. Nature:复杂菌群空间分布研究
  2. response.redirect 正在中止线程
  3. Silverlight C# 游戏开发:Flyer03大图裁剪,高效动画的艺术
  4. java统计报表日期工具类
  5. mysql在单片机移植_移植MySQL到嵌入式ARM平台
  6. Oracle性能监控脚本(sql)
  7. 机器学习之PCA原理
  8. springboot引入外部yml配置文件
  9. 电脑usb安装win11失败,如何给电脑安装win11系统
  10. c2065c语言错误,C语言常见错误
  11. LCA问题——倍增算法,Tarjan算法讲解
  12. 阿里云首席安全科学家吴翰清的思考:弹性安全网络,构建下一代安全的互联网...
  13. 分享Win10虚拟机VMware安装黑苹果MacOS Sierra图文教程
  14. 基于51单片机——60秒倒计时时钟
  15. ijkPlayer点播/直播/VR视频播放器(解码器)研究(2)-Android
  16. Rust图片类型识别
  17. 阿里云HttpDns接入
  18. Zoom(多人手机云视频会议软件)
  19. oracle 创建表 as,Oracle创建表(create table as)
  20. 安装netstat命令和使用明细

热门文章

  1. 什么是IT人员外包?
  2. noob学算法----冒泡(bubble)排序算法 Java
  3. 计算机网络WiFi共享,wifi共享软件哪个好 wifi共享软件排行榜推荐
  4. 梁宁-产品思维30讲-小米的效率革命
  5. 数据库原理与应用~第三版课后习题答案(何玉洁 编著)
  6. 注意:QQ空间加密并不安全
  7. ACM常用算法模版(常用函数与STL、重要公式与定理)
  8. CF1313C Skyscrapers
  9. ICLR 2020 图神经学习论文汇总
  10. python中转义符的用法_19.Python转义字符及用法