运用Python——爬取网易云歌单的全部歌曲热评_爬虫的简单应用
导航
·运用Python——爬虫_网易云音乐热评
·运用Python——游戏_四子棋_劳拉下棋
文章目录
- 导航
- 1.展示截图
- 2.代码
- 3.分析
- 常量的定义、界面设计
- 依次爬取歌曲信息
- 创建表格
- 爬取评论、保存
- 结束显示
- 缺点分析
- 完
免责声明:本程序仅供个人学习使用
功能目标:方便摘抄网易云音乐的热评,写一个爬虫程序,通过输入歌单号,爬取并保存歌单内歌曲的热评。
记录第一个自己完成的简单爬虫程序
1.展示截图
顺便安利一下这个日语歌单
2.代码
库:requests、bs4 、json、csv、time(可选)
import requests
from bs4 import BeautifulSoup
import json
from csv import writer
import timet1=time.clock()
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36',
}print("===========================\n获取网易云音乐歌单中所有歌曲热评\n===========================")
id= input("请输入歌单id:")
print("正在搜索。。。\n")playlist_url = f'http://music.163.com/playlist?id={id}'rs = requests.session()
r = rs.get(playlist_url, headers=headers)soup = BeautifulSoup(r.content, 'lxml')main = soup.find('ul', {'class': 'f-hide'})name_list= []
id_list= []for music in main.find_all('a'):music_id= music['href'][9:]music_name= music.textname_list.append(music_name)id_list.append(music_id)total= len(name_list)
cout=1
allcout=0file= open("网易云音乐歌单热评.csv","w",encoding="gb18030",newline="")
writer= writer(file)for i in id_list:list=[cout,name_list[cout-1]]writer.writerow(list)get_url= "http://music.163.com/api/v1/resource/comments/R_SO_4_"+i+"?limit=0&offset=0"r= requests.get(get_url,headers=headers)json_dict=json.loads(r.content.decode("utf-8"))hotcomments= json_dict["hotComments"]allcout+=len(hotcomments)no=1for j in hotcomments:nickname= j["user"]["nickname"]content= j["content"].replace("\n"," ")liked= str(j["likedCount"])+"赞"list=["","",no,nickname,liked,content]writer.writerow(list)no+=1cout+=1writer.writerow('')
file.close()t2= time.clock()-t1print(f"共找到{total}首歌 {allcout}条热评 用时{t2:.2f}s",end="\n===========================\n")
input("按任意键退出。。。")
3.分析
常量的定义、界面设计
#计时开始
t1=time.clock()
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36',
}print("===========================\n获取网易云音乐歌单中所有歌曲热评\n===========================")
id= input("请输入歌单id:")
print("正在搜索。。。\n")playlist_url = f'http://music.163.com/playlist?id={id}'#得到歌单的url
依次爬取歌曲信息
#得到歌单内的歌曲名称和歌曲id
rs = requests.session()
r = rs.get(playlist_url, headers=headers)soup = BeautifulSoup(r.content, 'lxml')#可通过歌曲网页的源码得到有关信息
main = soup.find('ul', {'class': 'f-hide'})name_list= []
id_list= []for music in main.find_all('a'):music_id= music['href'][9:]music_name= music.textname_list.append(music_name)id_list.append(music_id)#计数君
total= len(name_list)
cout=1
allcout=0
创建表格
#易错点:encoding,newline应设为""
file= open("网易云音乐歌单热评.csv","w",encoding="gb18030",newline="")
writer= writer(file)
爬取评论、保存
核心:此api会返回歌曲评论
“http://music.163.com/api/v1/resource/comments/R_SO_4_”+ id +"?limit=0&offset=0"
#用id查找评论,按照评论顺序记录
for i in id_list:list=[cout,name_list[cout-1]]writer.writerow(list)get_url= "http://music.163.com/api/v1/resource/comments/R_SO_4_"+i+"?limit=0&offset=0"r= requests.get(get_url,headers=headers)json_dict=json.loads(r.content.decode("utf-8"))hotcomments= json_dict["hotComments"]allcout+=len(hotcomments)no=1#从返回的json获取有关信息for j in hotcomments:nickname= j["user"]["nickname"]content= j["content"].replace("\n"," ")liked= str(j["likedCount"])+"赞"list=["","",no,nickname,liked,content]writer.writerow(list)no+=1cout+=1writer.writerow('')
file.close()
结束显示
#计时结束
t2= time.clock()-t1#计数君
print(f"共找到{total}首歌 {allcout}条热评 用时{t2:.2f}s",end="\n===========================\n")
input("按任意键退出。。。")
缺点分析
当歌曲数量多会导致用时特别长
拓展:多线程爬虫
完
生活的最好状态是冷冷清清的风风火火——木心
欢迎在评论区交流
感谢浏览
运用Python——爬取网易云歌单的全部歌曲热评_爬虫的简单应用相关推荐
- 爬虫python代码网易云_爬虫实战(二) 用Python爬取网易云歌单
最近,博主喜欢上了听歌,但是又苦于找不到好音乐,于是就打算到网易云的歌单中逛逛 本着 "用技术改变生活" 的想法,于是便想着写一个爬虫爬取网易云的歌单,并按播放量自动进行排序 这篇 ...
- python爬虫实例网易云-爬虫实战(二) 用Python爬取网易云歌单
最近,博主喜欢上了听歌,但是又苦于找不到好音乐,于是就打算到网易云的歌单中逛逛 本着 "用技术改变生活" 的想法,于是便想着写一个爬虫爬取网易云的歌单,并按播放量自动进行排序 这篇 ...
- 爬虫实战(二) 用Python爬取网易云歌单
最近,博主喜欢上了听歌,但是又苦于找不到好音乐,于是就打算到网易云的歌单中逛逛 本着 "用技术改变生活" 的想法,于是便想着写一个爬虫爬取网易云的歌单,并按播放量自动进行排序 这篇 ...
- python爬取网易云歌单
写在前面: 我的博客已迁移至自建服务器:博客传送门,CSDN博客暂时停止,如有机器学习方面的兴趣,欢迎来看一看. 此外目前我在gitHub上准备一些李航的<统计学习方法>的实现算法,目标将 ...
- python爬取网易云歌单_详解python selenium 爬取网易云音乐歌单名
目标网站: 首先获取第一页的数据,这里关键要切换到iframe里 打印一下 获取剩下的页数,这里在点击下一页之前需要设置一个延迟,不然会报错. 结果: 一共37页,爬取完毕后关闭浏览器 完整代码: u ...
- Python爬虫实战: 爬取网易云歌单
这篇文章,我们就来讲讲怎样爬取网易云歌单,并将歌单按播放量进行排序,下面先上效果图 1.用 requests 爬取网易云歌单 打开 网易云音乐 歌单首页,不难发现这是一个静态网页,而且格式很有规律,爬 ...
- python爬网易歌单_Python爬取网易云歌单
1. 关键点 使用单线程爬取,未登录,爬取网易云歌单主要有三个关键点: url为https://music.163.com/discover/playlist/?order=hot&cat=% ...
- [爬虫]Python爬取网易云音乐搜索并下载歌曲!
Python爬取网易云音乐搜索并下载歌曲! 文章目录 Python爬取网易云音乐搜索并下载歌曲! 1.准备工作 2."实地"观察 3.开始码代码! 4.搜索并下载 结束语 1.准备 ...
- Python爬虫-selenium爬取网易云歌单
文章目录 (一)工欲善其事必先利其器-安装工具 Selenium 浏览器 (二)实战 (一)工欲善其事必先利其器-安装工具 Selenium Selenium是一个强大的网络数据采集工具,其最初是为网 ...
最新文章
- Windows下安装MySQL(解压版本)
- Ubuntu建立(apache+php+mysql)+phpmyadmin
- 你不知道的Python的输入输出
- HTML与CSS基础之选择器优先级(十)
- HTML基础之bit哥的反客为主之道(9)
- 开展批评时的方式与态度
- python dataframe 合并乱序列表_Python数据处理--删除重复项、数值替换和表合并
- unity 字体width_Unity制作自定义字体的两种方法
- 台达三相PFC程序 +艾默生充电桩15kw模块 软件源码加原理图BOM
- 最详细bugku杂项小白解法(1~24已完结)
- python假期培训班
- 安装目录里无法找到计算机,安装软件弹出系统找不到指定的路径提示解决方法...
- 4.<head>标签
- 电脑的windows键已被停用解决方法
- Hadoop MapReduce 保姆级吐血宝典,学习与面试必读此文!
- 阿里云消息服务MNS-PHP+SDK
- 微信视频号怎么查看浏览历史记录
- 单臂路由原理与实验详情
- 屏幕录像软件哪个好用?
- python2019慕课答案_中国大学MOOC(慕课)2020Python编程基础课后答案
热门文章
- jdbc连接云数据库mysql_如何通过JDBC连接MySQL数据库
- wifi密码破解linux
- 集合 ArrayList
- uniapp-登录界面风格-002
- SQL Server 2017 安装流程
- 如何用c语言实现对称图形
- python爬取东方财富网中的资金流向表
- windows系统出现双击图标打开属性页
- C#中三种定时器Timer的使用方法
- JPA 异常Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1