导航

·运用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——爬取网易云歌单的全部歌曲热评_爬虫的简单应用相关推荐

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

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

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

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

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

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

  4. python爬取网易云歌单

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

  5. python爬取网易云歌单_详解python selenium 爬取网易云音乐歌单名

    目标网站: 首先获取第一页的数据,这里关键要切换到iframe里 打印一下 获取剩下的页数,这里在点击下一页之前需要设置一个延迟,不然会报错. 结果: 一共37页,爬取完毕后关闭浏览器 完整代码: u ...

  6. Python爬虫实战: 爬取网易云歌单

    这篇文章,我们就来讲讲怎样爬取网易云歌单,并将歌单按播放量进行排序,下面先上效果图 1.用 requests 爬取网易云歌单 打开 网易云音乐 歌单首页,不难发现这是一个静态网页,而且格式很有规律,爬 ...

  7. python爬网易歌单_Python爬取网易云歌单

    1. 关键点 使用单线程爬取,未登录,爬取网易云歌单主要有三个关键点: url为https://music.163.com/discover/playlist/?order=hot&cat=% ...

  8. [爬虫]Python爬取网易云音乐搜索并下载歌曲!

    Python爬取网易云音乐搜索并下载歌曲! 文章目录 Python爬取网易云音乐搜索并下载歌曲! 1.准备工作 2."实地"观察 3.开始码代码! 4.搜索并下载 结束语 1.准备 ...

  9. Python爬虫-selenium爬取网易云歌单

    文章目录 (一)工欲善其事必先利其器-安装工具 Selenium 浏览器 (二)实战 (一)工欲善其事必先利其器-安装工具 Selenium Selenium是一个强大的网络数据采集工具,其最初是为网 ...

最新文章

  1. Windows下安装MySQL(解压版本)
  2. Ubuntu建立(apache+php+mysql)+phpmyadmin
  3. 你不知道的Python的输入输出
  4. HTML与CSS基础之选择器优先级(十)
  5. HTML基础之bit哥的反客为主之道(9)
  6. 开展批评时的方式与态度
  7. python dataframe 合并乱序列表_Python数据处理--删除重复项、数值替换和表合并
  8. unity 字体width_Unity制作自定义字体的两种方法
  9. 台达三相PFC程序 +艾默生充电桩15kw模块 软件源码加原理图BOM
  10. 最详细bugku杂项小白解法(1~24已完结)
  11. python假期培训班
  12. 安装目录里无法找到计算机,安装软件弹出系统找不到指定的路径提示解决方法...
  13. 4.<head>标签
  14. 电脑的windows键已被停用解决方法
  15. Hadoop MapReduce 保姆级吐血宝典,学习与面试必读此文!
  16. 阿里云消息服务MNS-PHP+SDK
  17. 微信视频号怎么查看浏览历史记录
  18. 单臂路由原理与实验详情
  19. 屏幕录像软件哪个好用?
  20. python2019慕课答案_中国大学MOOC(慕课)2020Python编程基础课后答案

热门文章

  1. jdbc连接云数据库mysql_如何通过JDBC连接MySQL数据库
  2. wifi密码破解linux
  3. 集合 ArrayList
  4. uniapp-登录界面风格-002
  5. SQL Server 2017 安装流程
  6. 如何用c语言实现对称图形
  7. python爬取东方财富网中的资金流向表
  8. windows系统出现双击图标打开属性页
  9. C#中三种定时器Timer的使用方法
  10. JPA 异常Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1