票房和口碑称霸国庆档,用 Python 爬取猫眼评论区看看电影《我和我的家乡》到底有多牛

今年的国庆档电影市场的表现还是比较强势的,两名主力《我和我的家乡》和《姜子牙》起到了很好的带头作用。

《姜子牙》首日破 2 亿,一举刷新由《哪吒之魔童降世》保持的中国影市动画电影首日票房纪录,但因其后续口碑下滑,目前已被《我和我的家乡》在口碑和票房上实现了全面的超越,如不出意外,《我和我的家乡》将会是今年国庆档的最大赢家。

从上图中我们可以看出《我和我的家乡》在猫眼上目前有 29.6 万人评分,总体评分 9.3,可以说是一个相当不错的成绩了,本文我们爬取该片的猫眼电影评论,一起分析下这部影片评论区的内容。

爬取

首先,我们来爬取猫眼电影评论数据,因 PC 端只能看到猫眼上的几条评论,所以我们要借助 APP 接口来爬取,接口格式为: http://m.maoyan.com/mmdb/comments/movie/movieid.json?_v_=yes&offset=15&startTime=xxx ,两个参数说明如下:

  • movieid:网站中每部影片的唯一 id
  • startTime:当前页面中第一条评论的时间,每页共有 15 条评论

爬取的主要实现代码如下:

# 获取页面内容
def get_page(url):
    headers = {
        'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit'
                      '/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1',
        'accept': '*/*'
    }
    try:
        r = requests.get(url, headers=headers)
        r.raise_for_status()
        return r.text
    except requests.HTTPError as e:
        print(e)
    except requests.RequestException as e:
        print(e)
    except:
        print("出错了")

# 解析接口返回数据
def parse_data(html):
    json_data = json.loads(html)['cmts']
    comments = []
    # 解析数据并存入数组
    try:
        for item in json_data:
            comment = []
            comment.append(item['nickName']) # 昵称
            comment.append(item['cityName'] if 'cityName' in item else '') # 城市
            comment.append(item['content'].strip().replace('\n', '')) # 内容
            comment.append(item['score']) # 星级
            comment.append(item['startTime'])
            comment.append(item['time']) # 日期
            comment.append(item['approve']) # 赞数
            comment.append(item['reply']) # 回复数
            if 'gender' in item:
                comment.append(item['gender'])  # 性别
            comments.append(comment)
        return comments
    except Exception as e:
        print(comment)
        print(e)

# 保存数据,写入 csv
def save_data(comments):
    file
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值