查看原文
其他

『网络爬虫』这应该《速度与激情》系列9部中最拉胯的一部!!

才哥 可以叫我才哥 2021-10-08



关注可以叫我才哥,学习分享数据之美

我们的第79篇原创

作者:才哥


大家好,我是才哥。

最近F9上线,作为重温过多次《速度与激情》系列的我们,其实是满怀期待的,直到被这部“科幻片”&“超级英雄片”拉胯到毫无逻辑和夸张到极致的剧情给破防!

打开豆瓣,我们可以发现上映2天,3.77万人打出了5.6的《速激》系列最低评分。。

豆瓣评分

如此拉胯的口碑,那么观众老爷们都是怎么说的呢?让我们爬取豆瓣短评简单看看吧!

在开始爬虫之前,我们截取预告片中部分夸张的场景先睹为快。

来源:热荐电影

汽车加上火箭发射器,穿着宇航服上太空也是很有意思的

箭车

狂飙在正在坍塌的木桥上,只要速度快就能安全上岸

飞驰跨悬崖

猛踩油门挂在桥的绳子上,荡秋千一般安全落到悬崖对面

荡秋千

好了,是不是很“刺激”!那么,接下来我们进入正文吧!

1. 爬虫讲解

豆瓣短评需要登录豆瓣才能查看更多,所以在爬取过程中需要先登录账号获取cookie备用

由于豆瓣短评的爬虫比较简单且网上有诸多案例,这里不做非常详尽的讲解,我们就分请求网页解析数据存储数据三个部分对照代码做简单的介绍。

另外,我们会把完整代码上传到公众号的案例库,大家后台回复“955”即可领取可执行代码。

1.1. 引入工具库

涉及到数据请求用requests、解析用re正则、数据存储用pandas(os文件操作)。

import requests
import re
import pandas as pd
import os

1.2. 请求网页

我们按照爬虫的基础流程F12—>翻页—>看变化找到了如下信息:

网页分析

关于短评的请求地址url的变化规律,以及相关参数的含义,然后可以构建我们请求网页数据的函数如下:

# 请求网页数据
def get_html(tid,page,headers,_type):
    """
    tid:产品的id,比如 速度与激情9的产品id是25728006
    page:短评页码,0-24
    headers:请求头,需要带浏览器和cookie信息
    _type:评价类型(好评:h,中评:m,差评:l),为空就是全部
    """

    url = f'https://movie.douban.com/subject/{tid}/comments?'
    
    params = {
        'percent_type': _type,
        'start': page*20,
        'limit'20,
        'status''P',
        'sort''new_score',
        'comments_only'1,
        'ck''t9O9',
        }
    
    r = requests.get(url, params= params, headers=headers)
    # 请求数据为json
    data = r.json()
    
    html = data['html']   
    # 我们正则处理,所以先将空字符去掉
    html = re.sub('\s','',html)
    
    return html

1.3. 解析数据

由于我们用的是正则表达式解析数据,找到需要的数据所在的节点区域,然后编写正则规则即可。

比如,获取评价内容部分:

comment = re.findall('"short">(.*?)</span>', html)
html预览

完整关于作者、日期、评价内容、有用数据以及星数的解析过程如下:

# 解析数据
def get_data(html):
      
    df = pd.DataFrame(columns=['author','date','comment','vote_count','star'])
    df.author = re.findall('<atitle="(.*?)"href', html)
    df.date = re.findall('"comment-time"title=".*?">(.*?)</span>', html)
    df.comment = re.findall('"short">(.*?)</span>', html)
    df.vote_count = re.findall('"votesvote-count">(\d+)</span>',html)
    # df.star = re.findall('<spanclass="allstar(\d+)rating"',html)

    return df

1.4. 数据存储

这里将数据存储为csv文件,主要是追加写入比较方便。

这里在存储的时候先判断文件是不是存在,如果存在才采取追加写入模式,否则直接写入。

另外,就是注意设置encoding='utf_8_sig',不然直接打开文件可能出现中文乱码的情况。

# 存储数据
def save_df(df):
    if os.path.exists('data.csv'):
        df.to_csv('data.csv',index=None,mode='a',header=None,encoding='utf_8_sig')
    else:
        df.to_csv('data.csv',index=None,encoding='utf_8_sig')

关于数据存储,我们后续会考虑专题介绍一次,主要是关于存储为excel时候的同页签与多页签追加存储的方法。

1.5. 最后的补充

就是相关参数设置以及函数执行条件等等,详见下面代码:

if __name__ == '__main__':
    headers = {
        "User-Agent""Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36",
        "Cookie": 你登录后的cookie复制过来,
    }
    # 产品id,比如 速度与激情9的产品id是25728006
    tid = 25728006
    # 评价类型(好评:h,中评:m,差评:l)
    _type = 'l'
    for page in range(30):
        html = get_html(tid,page,headers,_type)
        df = get_data(html)
        save_df(df)
        print(f'{page+1}页评价已采集..')

结果预览

短评内容预览

2. 评价词云

我们可以看到豆瓣短评中,好评仅24%!!!

评价分布

2.1. 好评词云

在好评中,大家虽然也聊到剧情的拉胯,但是更看重的是飙车和冲向外太空带来的视觉爽感,的回归(虽然剧情逻辑不太通)以及对保罗情怀释放等等都是吸引他们的点。作为爆米花啊电影,还是可以的。

好评

在好评中得到较多认可的是一个叫远行者的观众的点评,他所关注的是这个系列整体、虽然鬼扯的剧情但是想象力够顶以及最后的情怀,这应该也是广大好评老爷们的一致感触吧:

无论速激出到多少部永远是我心中最爱的系列//剧情鬼扯故事老套想象力天马行空但每一部都是一个时代电影工业的标杆和动作电影想象力的天花板我们不就是想用电影去追求永远不可能有的第二次人生吗//结尾那抹熟悉的蓝色出现的时候眼泪都要绷不住了其实他一直在至少一直是在影迷的心里

2.2. 中评词云

给中评的观众老爷们聊的最多的也是剧情的离谱,故事的逻辑不通,夸张的冲向外太空的桥段和航的复活等等。。

中评词云

中评部分,其实都是带着讽刺意味的吐槽获得的认可居多,比如:

捏妈,下一部直接速度与激情10:星球大战。——  一只微米

任何英雄片最后都要上太空就对了 ——  不不鸟

如果有卡老师卡逼打鸣,这分应该还能再提上去些。卡逼打鸣1小时都比这燃哈哈哈哈哈哈哈哈。——  索多玛的旅人

2.3. 差评词云

超过42%的差评,基本都是对剧情的吐槽,槽点最大的就是冲向外太空的离谱。中间的一些情怀剧情,甚至让不少观众老爷们睡着了...

话说,没有巨石强森的F9,我觉得应该也是值得差评的点,你看这剧情都跑偏到外太空了不是。

差评词云

来自朝阳区妻夫木聪的差评获得了很多观众老爷们的点赞同意,他的评价如下:

噼里啪啦砰砰砰BOOM咚咚咚blablabla噼里啪啦咯咯咯嘿哈嗡嗡嗡duangduang砰砰砰blablablablablablablabla噼里啪啦叽里呱啦biubiubiu砰砰砰砰砰突突突突突哐哐哐BOOMBOOMBOOM咚咚咚突突突blablabla咻——BOOM!Wearefamily!结束。

来自宁赋闲看电影的差评,主要就是对剧情设定的不合理的吐槽,也获得了很多点赞支持:

Carsdon'tfly?就离大谱哈哈哈哈有钱真好,这要是没钱烧燃不起来,绝对就是吐槽博主的新素材。何止牛顿棺材板儿盖不住,小学生都得跳起来说两句。

大家聊到的卖情怀,在F9中似乎被放大很多,但是这种似乎为了情怀而情怀的设定也被不少人吐槽:

尽管最后给Paul留位还是有戳到我,但情怀这东西不能吃一辈子。


以上就是本次全部内容,欢迎大家点赞转发、分享在看。。谢谢~

-->推荐阅读<--

『小知识』Python自动安装第三方库的小技巧

『小知识』Python输出还可以这么花里胡哨

『数据分析』使用python进行同期群分析

『网络爬虫』自从学会了python,斗图就没怕过谁

『数据分析』pandas计算连续行为天数的几种思路

『福利』14张数据科学速查表+28本Python电子书

『网络爬虫』手把手教你扒一扒贝壳网成交房源数据

『数据分析』浅谈游戏运营中LTV的计算

『数据分析』使用Python计算RFM用户价值模

扫码添加作者好友,一起组队学习

微信号

gdc2918

微信公众号

可以叫我才哥

分享、在看与点赞

爱你一万年~

: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存