Python爬虫项目分享一:《爬取周杰伦的歌曲清单》
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¬ice=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¬ice=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¬ice=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爬虫项目分享一:《爬取周杰伦的歌曲清单》相关推荐
- Python爬虫项目分享二:《爬取周杰伦的歌曲评论》
python爬取周杰伦的歌曲评论 偶得一不错的爬虫教程,现博客分享,想要获取完整教程,加V:ff17328081445.文章为系列文章,持续更新,欢迎关注. 浏览器分析网页 #歌曲评价地址 https ...
- python爬虫对炒股有没有用_使用python爬虫实现网络股票信息爬取的demo
实例如下所示: import requests from bs4 import BeautifulSoup import traceback import re def getHTMLText(url ...
- python爬虫股票市盈率_使用python爬虫实现网络股票信息爬取的demo
实例如下所示: import requests from bs4 import BeautifulSoup import traceback import re def getHTMLText(url ...
- Python爬虫实战一之爬取糗事百科段子
点我进入原文 另外, 中间遇到两个问题: 1. ascii codec can't decode byte 0xe8 in position 0:ordinal not in range(128) 解 ...
- python爬虫(一)爬取豆瓣电影排名前50名电影的信息
python爬虫(一)爬取豆瓣电影排名前50名电影的信息 在Python爬虫中,我们可以使用beautifulsoup对网页进行解析. 我们可以使用它来爬取豆瓣电影排名前50名的电影的详细信息,例如排 ...
- Python爬虫【二】爬取PC网页版“微博辟谣”账号内容(selenium同步单线程)
专题系列导引 爬虫课题描述可见: Python爬虫[零]课题介绍 – 对"微博辟谣"账号的历史微博进行数据采集 课题解决方法: 微博移动版爬虫 Python爬虫[一]爬取移 ...
- Python爬虫【四】爬取PC网页版“微博辟谣”账号内容(selenium多线程异步处理多页面)
专题系列导引 爬虫课题描述可见: Python爬虫[零]课题介绍 – 对"微博辟谣"账号的历史微博进行数据采集 课题解决方法: 微博移动版爬虫 Python爬虫[一]爬取移 ...
- Python爬虫【三】爬取PC网页版“微博辟谣”账号内容(selenium单页面内多线程爬取内容)
专题系列导引 爬虫课题描述可见: Python爬虫[零]课题介绍 – 对"微博辟谣"账号的历史微博进行数据采集 课题解决方法: 微博移动版爬虫 Python爬虫[一]爬取移 ...
- 数据采集与存储案例——基于Python爬虫框架Scrapy的爬取网络数据与MySQL数据持久化
此案例需要预先安装pymsql python3.7.4 scrapy2.7.1 一.安装scrapy框架 1.使用pip命令安装scrapy pip install scrapy 在这里下载太慢可以使 ...
- python爬虫实例之小说爬取器
今天和大家分享一个爬取盗版小说的实例. 如今的网络小说可谓是百家齐放各领风骚,玄幻科幻穿越修仙都市- 各种套路看得我是心潮澎湃,笔者曾经也蛮喜欢看小说的,以前经常是拿着一台诺基亚看到深夜,第二天带着黑 ...
最新文章
- Nature:复杂菌群空间分布研究
- response.redirect 正在中止线程
- Silverlight C# 游戏开发:Flyer03大图裁剪,高效动画的艺术
- java统计报表日期工具类
- mysql在单片机移植_移植MySQL到嵌入式ARM平台
- Oracle性能监控脚本(sql)
- 机器学习之PCA原理
- springboot引入外部yml配置文件
- 电脑usb安装win11失败,如何给电脑安装win11系统
- c2065c语言错误,C语言常见错误
- LCA问题——倍增算法,Tarjan算法讲解
- 阿里云首席安全科学家吴翰清的思考:弹性安全网络,构建下一代安全的互联网...
- 分享Win10虚拟机VMware安装黑苹果MacOS Sierra图文教程
- 基于51单片机——60秒倒计时时钟
- ijkPlayer点播/直播/VR视频播放器(解码器)研究(2)-Android
- Rust图片类型识别
- 阿里云HttpDns接入
- Zoom(多人手机云视频会议软件)
- oracle 创建表 as,Oracle创建表(create table as)
- 安装netstat命令和使用明细