0x00目标
对<>影片的短评进行数据分析,算是童年回忆吧。
站点: aHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2Jhbmd1bWkvbWVkaWEvbWQyODIyNzgyMC8/c3BtX2lkX2Zyb209NjY2LjI1LmJfNzI2NTc2Njk2NTc3NWY2ZDZmNjQ3NTZjNjUuMSNzaG9ydA==
项目结构如下:
0x01爬虫部分
1.1接口分析
在源代码里也有部分数据,但应该不够。
这里可以看到是xhr。
直接在浏览器访问这个接口,可以发现数据全给我们了,因此可以判定没啥反爬。
对下一次请求需要拿到cursor,但是最后一次的cursor不知道是什么。那就换一个少评论的影片,观察即可。是0
总结一下:请求方式为get.携带的参数有media_id,ps,sort,cursor,均不难得到。返回的数据类型是json格式。没什么特别的反爬,注意模拟浏览器即可。
1.2存储设计
这里我将uname,score,disliked,liked,likes,ctime,content写入xls文件里,后面转成了csv方便读取数据,感觉xls还是比csv慢。
1.3程序运行的情况
有如下error:
recursion的默认最大深度应该是1000,导入sys 修改下即可,但是这里就浪费了40分钟了,因为没写日志…后面开了个线程
1.4代码
# !/usr/bin/env python# -*- coding: utf-8 -*-# @author: yjp# @software: PyCharm# @file: main.py# @time: 2022-09-30 22:57import sysimport osimport xlwtimport xlrdfrom xlutils.copy import copyfrom requests_html import HTMLSessionimport timefrom threading import *sys.setrecursionlimit(3000) # 将默认的递归深度修改为3000session = HTMLSession()class plSpider(object): def __init__(self): self.start_url = "https://api.bilibili.com/pgc/review/short/list" />
可以看到五星率到达了99.28%,绝大部分人对这部作品还是很认可的。
评论字数的话,因为是短评,所以每条评论的字数都不多。
出现最多的关键字如下:
星爷经典电影!!!
词云图如下:
情感分析的话就不做了,得选一个负面评论多点的例子。
0x03总结
可视化是对数据的进一步挖掘,也是数据价值的体现,可以让人轻松地捕捉到自己想看到的内容。