前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >『网络爬虫』这应该《速度与激情》系列9部中最拉胯的一部!!

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

作者头像
可以叫我才哥
发布2021-08-05 15:19:57
5170
发布2021-08-05 15:19:57
举报
文章被收录于专栏:可以叫我才哥
我们的第79篇原创

作者:才哥


大家好,我是才哥。

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

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

豆瓣评分

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

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

来源:热荐电影

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

火箭车

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

飞驰跨悬崖

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

荡秋千

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

1. 爬虫讲解

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

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

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

1.1. 引入工具库

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

代码语言:javascript
复制
import requests
import re
import pandas as pd
import os

1.2. 请求网页

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

网页分析

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

代码语言:javascript
复制
# 请求网页数据
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. 解析数据

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

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

代码语言:javascript
复制
comment = re.findall('"short">(.*?)</span>', html)

html预览

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

代码语言:javascript
复制
# 解析数据
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',不然直接打开文件可能出现中文乱码的情况。

代码语言:javascript
复制
# 存储数据
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. 最后的补充

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

代码语言:javascript
复制
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留位还是有戳到我,但情怀这东西不能吃一辈子。

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 可以叫我才哥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 爬虫讲解
    • 1.1. 引入工具库
      • 1.2. 请求网页
        • 1.3. 解析数据
          • 1.4. 数据存储
            • 1.5. 最后的补充
            • 2. 评价词云
              • 2.1. 好评词云
                • 2.2. 中评词云
                  • 2.3. 差评词云
                  相关产品与服务
                  对象存储
                  对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档