导语

今天需要跟大家分享关于如何爬取网易云热门评论的。

对于网易云,相信大家都不陌生。博主便常常使用网易云音乐,一方面是为了听歌,愉悦身心,另一位方面是冲着网易云评论来的。在网易云音乐,相信你总能阅读到各种好玩又古怪的评论,或爱情、友情、或是段子、搞笑。当然的,也不乏相当精彩的美句,亦或相当精辟的人生哲理。而我们今天需要做的便是将这些精彩评论 爬取下来,保存到本地or服务器中,以供自己欣赏,或者运用。

在这里,我们选择运用Python来完成这项任务,你需要具备一些基础的Python知识,以及相关库的运用知识。以下是本教程运用到的Python第三方库:re

requests

sqlalchemy

apscheduler

在导入使用这些库前,你需要使用Pip进行安装,这里不再累赘,不会的小伙伴请自行百度补习。

此外如果你选择将数据上传到服务器,你需要具备一定的数据库知识,这里以Mysql为例。

热身

对于requests、re相信大家早已轻车熟路,能够运用自如,这里不再多说。

但值得一提的是,部分小伙伴可能对sqlalchemy (Python对象关系映射工具Object Relational Mapping)不大熟悉,甚至没听说过。这里有必要跟大家简单讲解一下。简而言之,ORM(对象关系映射)将数据库中的表与面向对象编程语言(Python便是一门面向对象的语言)中的类(Python中的Class)建立起一对应的映射关系,当我们需要操作数据库or数据库中的表格时,只需要通过操作 类 类或类实例来完成,从而简化、方便我们的数据库操作,不用像在服务器一样需要输入SQL命令来完成任务。

首先需要通过pip安装sqlalchemy,Python3.0上在命令行执行一下命令:pip install sqlalchemy

安装完成后,我们在python中导入sqlalchemy,并初始化DBSession,创建一个session回话。from sqlalchemy.orm import sessionmaker

from sqlalchemy.ext.declarative import declarative_base

from sqlalchemy import Column, VARCHAR, Integer, create_engine

# 定义User对象:

class MusicComment(Base):

# 表的名字:

__tablename__ = 'music_comment'

# 表的结构:

id = Column(Integer, primary_key=True, autoincrement=True)

music_name = Column(VARCHAR(128), nullable=False, index=True, comment="音乐名称")

music_author = Column(VARCHAR(128), nullable=True, index=True, comment="音乐演唱者")

music_platform = Column(VARCHAR(32), index=True, nullable=False, comment="音乐平台")

music_url = Column(VARCHAR(512), index=True, nullable=False, comment="音乐网址")

comment_user = Column(VARCHAR(64), index=True, nullable=False, comment="评论用户")

comment_liked = Column(Integer, nullable=False, comment="评论被赞次数")

comment_text = Column(VARCHAR(1024), index=True, nullable=False, comment="音乐评论内容")

def __repr__(self):

return f"MusicComment: {self.comment_user} - {self.music_name}-{self.music_author}"

# 初始化数据库连接:

engine = create_engine('mysql+pymysql://username:password@host:port/database_name')

# 创建DBSession类型:

DBSession = sessionmaker(bind=engine)

# 创建sesion回话

session = DBSession()

如上所示,我们定义了一个MusicComemnt类,其继承于sqlalchemy下的declarative_base, 使我们的Python类与数据库中的表格建立起某种关系,当我们需要添加、删除评论时,只需要操作这个类即可实现。

另外有些知识你需要知道的是,MusicComment中的__tablename__代表数据库中的表格名称。若你此前已经建立关于 音乐评论 的表格,__tablename__应当与其保持一致。

在MusicComment类中,一行属性代表一列(除__tablename__外),以music_name 一行为例。music_name既是变量名称,也是数据库表格中列的名称,Column表示一列,Column中的 VARCAHR(128) 表示最大128字节的变化字符串,nullable=False 表示该行必填,不可省略, index=True 表示支持索引操作,comment="音乐名称"为添加注释,注明该行的意义。此外 primary_key=True 表示将该行设置为主键, autoincrement=True 表示该行变量自动递增。nullable、index、comment都是可选参数。

Create_engine方法中的参数表示的是 数据库链接地址。//前面部分基本不变(你需要提前使用 pip 安装 pymysql),后面表示数据库的相关连接信息,如英文意思所示。

到这里,如果你的设置正确,MuiscComment与你的数据库已建立对象映射关系,下面的数据库操作将变得非常简单。new_user = MusicComment(music_name="Cooper's music",

music_author="Cooper",

music_platform="NetEaseCloud",

music_url="http://music.163.com/song?id=xxxxxx",

comment_user="Cooper's fan",

comment_liked=9999999,

comment_text="技术改变世界,科技创造未来!")

session.add(new_user)

session.commit()

session.close()

在这里,我们实例化了一个MuiscComment类,并传递了相关的必要参数,其中id是数据库表格中的自动增量,不需要我们填写。实例化之后,我们将这个实例添加到session回话中,后将回话进行提交操作,最后关闭回话,这样一条评论就被我们顺利地添加到我们的mysql数据库中存储起来了。

到这里,你已经基本掌握了sqlalchemy的基本用法,若你能逐行地理解、弄懂,你已经基本入门Python关于ORM的操作,而对于我们这个教程而言,这基本的操作已经足够我们完成任务。更多sqlalchemy 知识,请自行探索。

正文

思路构思

现在,我们可以正式进入我们的爬虫环节了。

首先,我们需要思考两个问题:一是如何尽可能的收集尽可能多的评论,挑选出最精彩的评论;二是如何尽可能的过滤评论。

对于第一个问题,我们选择爬榜单的形式。在网易云音乐排行榜中,有许多个音乐榜单,诸如新歌榜、热歌榜等,每个榜单又囊括了数十到数百个音乐,而这些榜单是会更新的,因而我们只需要每天的定期重复执行我们的爬虫去收集,就可以实现我们的目标了。当然的,你也可以通过首页的 歌手 入口, 爬取歌手信息,进入歌手页面后再收集歌手音乐信息,进行一次性完成爬取任务,这里博主有编写相关的代码,但尚未完工,不在此过多讲解。

对于第二个问题,通常我们都认为,点赞数越高的评论 应当可以被认为是精彩的评论, 因而,我们只需要设定一个评论点赞数阈值,采集阀值以上即可。

抓包分析

待续

python爬取网易云评论_Python - 网易云热门评论爬取相关推荐

  1. python爬虫音乐图片的感受_python爬虫+词云图,爬取网易云音乐评论

    又到了清明时节,用python爬取了网易云音乐<清明雨上>的评论,统计词频和绘制词云图,记录过程中遇到一些问题 爬取网易云音乐的评论 一开始是按照常规思路,分析网页ajax的传参情况.看到 ...

  2. python爬取b站评论_Python爬虫框架:scrapy抓取B站博人传评论数据

    1. B站博人传评论数据爬取简介 今天想了半天不知道抓啥,去B站看跳舞的小姐姐,忽然看到了评论,那就抓取一下B站的评论数据,视频动画那么多,也不知道抓取哪个,选了一个博人传跟火影相关的,抓取看看.网址 ...

  3. python爬取虎扑评论_python爬虫系列Selenium定向爬取虎扑篮球图片详解

    前言: 作为一名从小就看篮球的球迷,会经常逛虎扑篮球及湿乎乎等论坛,在论坛里面会存在很多精美图片,包括NBA球队.CBA明星.花边新闻.球鞋美女等等,如果一张张右键另存为的话真是手都点疼了.作为程序员 ...

  4. python爬取js动态网页_Python 从零开始爬虫(八)——动态爬取解决方案 之 selenium

    selenium--自动化测试工具,专门为Web应用程序编写的一个验收测试工具,测试其兼容性,功能什么的.然而让虫师们垂涎的并不是以上的种种,而是其通过驱动浏览器获得的解析JavaScript的能力. ...

  5. python随机数生成十个数字的成语_python小白也可以分分钟爬取微博数据,并生成有个性的词云,你get到了吗?...

    Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象.直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定.它包含了一组完善而且容易理 ...

  6. python爬去百度百科词条_Python爬虫入门学习实践——爬取小说

    本学期开始接触python,python是一种面向对象的.解释型的.通用的.开源的脚本编程语言,我觉得python最大的优点就是简单易用,学习起来比较上手,对代码格式的要求没有那么严格,这种风格使得我 ...

  7. python自动爬取更新电影网站_Python爬虫之—微信实时爬取电影咨询

    本文将介绍如何使用爬虫在微信对话中实现实时的电影咨询爬取功能,希望和大家一起来分享" 1. 撩妹起源 俗话说的好:少壮不撩妹,长大徒伤悲啊! 说的很对,但是在这个撩妹的时代,要想成功把到妹, ...

  8. python获取今日头条搜索信息_python爬虫(十二、爬取今日头条关键词所有文章)

    今日头条 我们以搜索'妹子'为例 那 么 我 们 在 右 上 角 的 搜 索 框 搜 索 妹 子 , 出 来 了 一 系 列 文 章 那么我们在右上角的搜索框搜索妹子,出来了一系列文章那么我们在右上角 ...

  9. python爬贴吧回复内容_Python 基础语法+简单地爬取百度贴吧内容

    Python笔记 1.Python3和Pycharm2018的安装 2.Python3基础语法 2.1.1.数据类型 2.1.1.1.数据类型:数字(整数和浮点数) 整数:int类型 浮点数:floa ...

  10. python爬取网页数据软件_python爬虫入门10分钟爬取一个网站

    一.基础入门 1.1什么是爬虫 爬虫(spider,又网络爬虫),是指向网站/网络发起请求,获取资源后分析并提取有用数据的程序. 从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HT ...

最新文章

  1. 领域驱动设计 敏捷_反馈失败:发现敏捷数据驱动的致命弱点的风险
  2. PNAS-2018-病原菌在植物免疫下的转录组
  3. Oracle 监听器无法启动(TNS-12537,TNS-12560,TNS-00507)
  4. ORACLE基础学习-RMAN应用之(归档模式无备份,丢失数据文件的恢复)
  5. Jmeter设置变量与引用变量(三)
  6. 【Java】Java 的Object对象你真的懂了吗
  7. 常州模拟赛d7t2 数组
  8. python中tkinter模块pack_使用Python中的tkinter模块作图的方法
  9. mybatis的源码学习
  10. 用友凭证打印页面边距设置会同步
  11. 一个div里面包含两个div让两个div垂直居中
  12. C语言求三角形斜边长
  13. 4.文件读取操作_read函数
  14. 兔子问题 php,PHP基于递归算法解决兔子生兔子问题php技巧
  15. 单片机三角波c语言程序,三角波单独发生 单片机程序
  16. 北京卓镭激光完成近亿元B轮融资,君联资本领投...
  17. 互联网成数据宝库,网络数据采集技术推动人工智能发展
  18. 这篇文章几乎回答了你对量化对冲的所有疑问
  19. 用百行Python代码写一个关于德州扑克的类
  20. 2009最新雷人语录

热门文章

  1. P2339 [USACO04OPEN]Turning in Homework G 笔记/题解
  2. oracle dataguard 日志传输,从alert日志看Oracle 11g DataGuard日志传输
  3. ps的cc版本安装包以及破解包
  4. 基于cnn的人脸识别_人脸识别技术全面总结:从传统方法到深度学习
  5. Spring Cloud原理分析系列#Gateway#GlobalFilter vs GatewayFilter vs WebFilter
  6. CQF笔记Primer金融基础
  7. 我有一个 APP 创意,如何将其实现?
  8. Windows7电脑自动断网的解决方法
  9. 第29课:来自未来的简历
  10. 网站三级域名是什么样?