1.猫眼电影短评接口

http://maoyan.com/films/1217236
我们直接访问这个,在web端只能看到最热的10条短评,那怎么获取到所有短评呢?
(1) 访问上面的链接,按下F12,然后点击图片上的图标,把浏览模式(响应式设计模式,火狐快捷键Ctrl+Shift+M)改为手机模式,刷新页面。


(2)换用谷歌浏览器,F12下进行上面操作,加载完毕后下拉短评,页面继续加载,找到含有offset和startTime的加载条,发现它的Response中包含我们想要的数据,为json格式。

2.获取短评

(1)简单分析

通过上面分析

Request URL: http://m.maoyan.com/mmdb/comments/movie/1217236.json?v=yes&offset=0&startTime=0%2021%3A09%3A31
Request Method: GET

下滑了几次次,我发现了下面规律:
分析上面数据变化,可以大致猜测出:offset表示该接口显示评论开始位置,每个页面15条,比如:15,则显示15-30这中间的15条评论; startTime表示当前评论的时间,固定格式(2018-10-06)。
另外接口最后的%2021%3A09%3A31是不变的。
(2)代码获取

import requests
from fake_useragent import UserAgent
import json
'''
小编准备的python学习资料,加群:1136201545 即可免费获取!
'''
headers = {"User-Agent": UserAgent(verify_ssl=False).random,"Host":"m.maoyan.com","Referer":"http://m.maoyan.com/movie/1217236/comments?_v_=yes"}
# 猫眼电影短评接口
offset = 0
# 电影是2018.9.21上映的
startTime = '2018-09-21'
comment_api = 'http://m.maoyan.com/mmdb/comments/movie/1217236.json?_v_=yes&offset={0}&startTime={1}%2021%3A09%3A31'.format(offset,startTime)
# 发送get请求
response_comment = requests.get(comment_api,headers = headers)
json_comment = response_comment.text
json_comment = json.loads(json_comment)
print(json_comment)

返回数据:
(3)数据简单介绍
(4)数据提取

# 获取数据并存储
def get_data(self,json_comment):json_response = json_comment["cmts"]  # 列表list_info = []for data in json_response:cityName = data["cityName"]content = data["content"]if "gender" in data:gender = data["gender"]else:gender = 0nickName = data["nickName"]userLevel = data["userLevel"]score = data["score"]list_one = [self.time,nickName,gender,cityName,userLevel,score,content]list_info.append(list_one)self.file_do(list_info)

3.存储数据

# 存储文件
def file_do(list_info):# 获取文件大小file_size = os.path.getsize(r'G:\maoyan\maoyan.csv')if file_size == 0:# 表头name = ['评论日期', '评论者昵称', '性别', '所在城市','猫眼等级','评分','评论内容']# 建立DataFrame对象file_test = pd.DataFrame(columns=name, data=list_info)# 数据写入file_test.to_csv(r'G:\maoyan\maoyan.csv', encoding='gbk', index=False)else:with open(r'G:\maoyan\maoyan.csv', 'a+', newline='') as file_test:# 追加到文件后面writer = csv.writer(file_test)# 写入文件writer.writerows(list_info)

数据显示

数据分析可视化

1.提取数据

代码:

def read_csv():content = ''# 读取文件内容with open(r'G:\maoyan\maoyan.csv', 'r', encoding='utf_8_sig', newline='') as file_test:# 读文件reader = csv.reader(file_test)i = 0for row in reader:if i != 0:time.append(row[0])nickName.append(row[1])gender.append(row[2])cityName.append(row[3])userLevel.append(row[4])score.append(row[5])content = content + row[6]# print(row)i = i + 1print('一共有:' + str(i - 1) + '条数据')return content

一共有:15195条数据

评论者性别分布可视化

# 评论者性别分布可视化
def sex_distribution(gender):# print(gender)from pyecharts import Pielist_num = []list_num.append(gender.count('0')) # 未知list_num.append(gender.count('1')) # 男list_num.append(gender.count('2')) # 女attr = ["其他","男","女"]pie = Pie("性别饼图")pie.add("", attr, list_num, is_label_show=True)pie.render("H:\PyCoding\spider_maoyan\picture\sex_pie.html")


评论者所在城市分布可视化

# 评论者所在城市分布可视化
def city_distribution(cityName):city_list = list(set(cityName))city_dict = {city_list[i]:0 for i in range(len(city_list))}for i in range(len(city_list)):city_dict[city_list[i]] = cityName.count(city_list[i])# 根据数量(字典的键值)排序sort_dict = sorted(city_dict.items(), key=lambda d: d[1], reverse=True)city_name = []city_num = []for i in range(len(sort_dict)):city_name.append(sort_dict[i][0])city_num.append(sort_dict[i][1])import randomfrom pyecharts import Barbar = Bar("评论者城市分布")bar.add("", city_name, city_num, is_label_show=True, is_datazoom_show=True)bar.render("H:\PyCoding\spider_maoyan\picture\city_bar.html")# 地图可视化
def render_city(cities):



每日评论总数可视化分析

def time_num_visualization(time):from pyecharts import Linetime_list = list(set(time))time_dict = {time_list[i]: 0 for i in range(len(time_list))}time_num = []for i in range(len(time_list)):time_dict[time_list[i]] = time.count(time_list[i])# 根据数量(字典的键值)排序sort_dict = sorted(time_dict.items(), key=lambda d: d[0], reverse=False)time_name = []time_num = []print(sort_dict)for i in range(len(sort_dict)):time_name.append(sort_dict[i][0])time_num.append(sort_dict[i][1])line = Line("评论数量日期折线图")line.add("日期-评论数",time_name,time_num,is_fill=True,area_color="#000",area_opacity=0.3,is_smooth=True,)line.render("H:\PyCoding\spider_maoyan\picture\c_num_line.html")


评论者猫眼等级、评分可视化

def level_score_visualization(userLevel,score):from pyecharts import PieuserLevel_list = list(set(userLevel))userLevel_num = []for i in range(len(userLevel_list)):userLevel_num.append(userLevel.count(userLevel_list[i]))score_list = list(set(score))score_num = []for i in range(len(score_list)):score_num.append(score.count(score_list[i]))pie01 = Pie("等级环状饼图", title_pos='center', width=900)pie01.add("等级",userLevel_list,userLevel_num,radius=[40, 75],label_text_color=None,is_label_show=True,legend_orient="vertical",legend_pos="left",)pie01.render("H:\PyCoding\spider_maoyan\picture\level_pie.html")pie02 = Pie("评分玫瑰饼图", title_pos='center', width=900)pie02.add("评分",score_list,score_num,center=[50, 50],is_random=True,radius=[30, 75],rosetype="area",is_legend_show=False,is_label_show=True,)pie02.render("H:\PyCoding\spider_maoyan\picture\score_pie.html")


Python爬取《悲伤逆流成河》猫眼信息相关推荐

  1. 爬取《悲伤逆流成河》猫眼信息 | 郭敬明五年电影最动人之作

    一.我的感受 知道<悲伤逆流成河>上映还是在qq空间看见学弟发了说说,突然想起初中追小四的书,每天看到晚上10点多,昨天看了枪版的<悲伤逆流成河>,整个故事情节几乎和小说一模一 ...

  2. 爬取猫眼短评相关数据可视化分析《悲伤逆流成河》 | 郭敬明五年电影最动人之作

    欢迎关注微信公众号:简说Python 账号:xksnh888 关注回复:1024,可以领取精选编程学习电子书籍. 本篇所有源码已上传github,点击这里获取 一.我的感受 知道<悲伤逆流成河& ...

  3. 爬取《悲伤逆流成河》猫眼信息

    文章有点长,请耐心看完,文末有惊喜. 郭敬明五年电影最动人之作<悲伤逆流成河>,可以说口碑票房都丰收的好剧,可惜导演不是郭敬明,导演是落落,一个写而优则导的好作家. 本篇推文将带你爬取猫眼 ...

  4. 使用jieba和wordcloud进行中文分词并生成《悲伤逆流成河》词云

    因为词云有利于体现文本信息,所以我就将那天无聊时爬取的<悲伤逆流成河>的评论处理了一下,生成了词云. 关于爬取影评的爬虫大概长这个样子(实际上是没有爬完的): #!/usr/bin/env ...

  5. 说电影《悲伤逆流成河》

    说电影<悲伤逆流成河> 文章目录 说电影<悲伤逆流成河> 前言 爬取猫眼影评 数据可视化 词云 圆饼图 热力图 对差评点评 前言 电影<悲伤逆流成河>上映已经半个月 ...

  6. 《悲伤逆流成河》影评

    影片优美句子摘抄: 上一次觉得阳光这么温暖,是什么时候 好像就在昨天 又好像 上辈子那么远 不要拒绝悲伤 只管去难过 去愤怒好了 忍不住眼泪 那就尽情的哭吧 而悲伤就像条大河或许会吞没你 但也能带你去 ...

  7. python爬房源信息_用python爬取链家网的二手房信息

    题外话:这几天用python做题,算是有头有尾地完成了.这两天会抽空把我的思路和方法,还有代码贴出来,供python的初学者参考.我python的实战经历不多,所以代码也是简单易懂的那种.当然过程中还 ...

  8. python 爬取链家数据_用python爬取链家网的二手房信息

    题外话:这几天用python做题,算是有头有尾地完成了.这两天会抽空把我的思路和方法,还有代码贴出来,供python的初学者参考.我python的实战经历不多,所以代码也是简单易懂的那种.当然过程中还 ...

  9. Python爬取豆瓣电影top250的电影信息

    Python爬取豆瓣电影top250的电影信息 前言 一.简介 二.实例源码展示 小结 前言 相信很多小伙伴在学习网络爬虫时,老师们会举一些实例案例讲解爬虫知识,本文介绍的就是经典爬虫实际案例–爬取豆 ...

  10. python爬取并分析淘宝商品信息

    python爬取并分析淘宝商品信息 背景介绍 一.模拟登陆 二.爬取商品信息 1. 定义相关参数 2. 分析并定义正则 3. 数据爬取 三.简单数据分析 1.导入库 2.中文显示 3.读取数据 4.分 ...

最新文章

  1. BZOJ.1032.[JSOI2007]祖码(区间DP)
  2. 编程方法学6:操作符
  3. oracle建按月分区的表,ORACLE创建按月和按天的自动递增分区
  4. 隐含马尔可夫模型在语言处理中的应用(Z)
  5. MQTT客户端库-Paho GO
  6. Silverlight专题(15) - 你自己的视频播放器之自定义MoveToPointSlider
  7. 【转】ITK和VTK比较
  8. 新华三首发数字大脑计划;微软进军物联网领域?说好的三星折叠屏发布会,就这样不开了?Google 发布小型芯片 Jacquard...
  9. MySQL 数据库 like 语句通配符模糊查询小结
  10. ubuntu中由apt-get获得的文件包保存在哪里?
  11. thttpd支持php吗,轻量型thttpd+php5
  12. Visual Studio 单元测试之二---顺序单元测试
  13. [转载] python字符串只留数字_Python工匠:数字与字符串(下)
  14. python 调用dll中c或c++语言带指针,数组方法
  15. QQ快速登录协议分析以及风险反思
  16. shell编程阶段性总结+几个shell脚本实例
  17. 7-53 奥运排行榜 (25 分)
  18. iphone内存管理(一)
  19. 视频转GIF+GIF录制
  20. 二层交换与MAC地址

热门文章

  1. 阿比特龙最长服用多久?阿比特龙吃多久PSA能降?
  2. Spacedesk软件推荐,让你的平板也变成电脑的副屏
  3. Python文件独特行数
  4. 批量读取txt文件中的内容进入csv文件
  5. 两数和(LeetCode)
  6. zipkin学习20210819
  7. es数据库集群以及中文分词
  8. WiFi新伙伴802.11AY来了,你必知的3件事
  9. Solr笔记--转载
  10. Android 11.0 Launcher3 动态日历图标功能实现