《隐秘的角落》影评数据分析

一、研究背景

随着移动互联网和智能设备的不断发展,人们的生活质量也不断地提高,可以通过互联网在线对电视剧进行评价评分。电视剧的热播不但给电视剧市场带来巨大的经济利益,同时也给电视剧主演们带来巨大的名气。
同时,近年来,自然语言处理技术也得到了以计算机科学为代表的自然科学领域到社会科学领域的广泛关注,并且在新闻传播、舆论管理、观点分析等问题中展示了不容忽视的价值。随着互联网的发展和大数据时代的到来,网络上的数据分析仅仅靠人工筛选挖掘出有价值的信息是实现不了的,如何快速高效地从不规则、海量的文本中挖掘出有意义的信息并分析情感倾向性是自然语言处理(natural language processing,NLP) 领域研究的热点。NLP 是人工智能领域的一个分支,主要是运用自然语言处理和理解人类的语言,应用包括机器翻译、信息提取、文本分类、语音转换等。

二、研究目的

本文用 Python 语言的爬虫技术对豆瓣影评、爱奇艺上的电视剧信息进行爬取,利用 Python 语言编写爬虫程序自动获取数据,筛选有价值的信息,对数据进行挖掘来解决业务问题。对豆瓣影评数据进行清洗与筛选,采用 Python 的类库 SnowNLP 进行影评数据的情感分析,将有价值的数据通过可视化技术展示出来,可以帮助用户更高效便捷地获取到有价值的信息,同时为媒体、 电影市场、社交网站提供口碑及相关服务的帮助。最后在情感分析的基础上,再利用 LDA 模型分析获取正反两面情感的短评热门话题;在研究的末尾,以协同过滤算法为基础,构建了一个以用户评分为基础的评分预测模型,用来为消费者的购买行为提供一定的决策支持,同时为商品提供者提供一定的发展方向。

三、数据来源及说明

2.1 数据来源

电视剧《隐秘的角落》改编自紫金陈的悬疑小说《坏小孩》,主要讲述沿海小城的三个孩子在景区游玩时无意拍摄记录了一次谋杀由此展开冒险的故事 ,该剧于 2020 年 6 月 16 日在爱奇艺播出,从正式上线开始,热度就一直处于上升状态,广受网友热议,豆瓣评分高达 8.8。
本报告采集的数据来源于爱奇艺在线视频网站和豆瓣影评社交网站。

2.2 数据采集

# 豆瓣数据 
import requests
from lxml import etree
from tqdm import tqdm
import time
import random
import pandas as pd
import re

name_list, content_list, date_list, score_list, city_list = [], [], [], [], []
movie_name = ""

def get_city(url, i):
    time.sleep(round(random.uniform(2, 3), 2))
    headers = {
   
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}
    cookies = {
   'Cookie': 'll="118284"; bid=e6UrGvwVsqg; _vwo_uuid_v2=D4F5C1BB799C95B29D7ED80E47E6B91A8|e52ea094a21f0c987ba574d62bb3f7ad; ap_v=0,6.0; _pk_ses.100001.4cf6=*; dbcl2="242031783:I7kOQnoSDv4"; ck=_560; _pk_id.100001.4cf6=1da1eec52c72871f.1636960526.4.1639536185.1639534350.'}  # 2018.7.25修改,
    res = requests.get(url, cookies=cookies, headers=headers)
    if (res.status_code == 200):
        print("\n成功获取第{}个用户城市信息!".format(i))
    else:
        print("\n第{}个用户城市信息获取失败".format(i))
    pattern = re.compile('<div class="user-info">.*?<a href=".*?">(.*?)</a>', re.S)
    item = re.findall(pattern, res.text)  # list类型
    return (item[0])  # 只有一个元素,所以直接返回


def get_content(id, page):
    headers = {
   
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}
    cookies = {
   'Cookie': 'll="118284"; bid=e6UrGvwVsqg; _vwo_uuid_v2=D4F5C1BB799C95B29D7ED80E47E6B91A8|e52ea094a21f0c987ba574d62bb3f7ad; ap_v=0,6.0; _pk_ses.100001.4cf6=*; dbcl2="242031783:I7kOQnoSDv4"; ck=_560; _pk_id.100001.4cf6=1da1eec52c72871f.1636960526.4.1639536185.1639534350.'}
    url = "https://movie.douban.com/subject/" + str(id) + "/comments?start=" + str(page * 10) + "&limit=20&sort=new_score&status=P"
    res = requests.get(url, headers=headers, cookies=cookies)

    pattern = re.compile('<div id="wrapper">.*?<div id="content">.*?<h1>(.*?) 短评</h1>', re.S)
    global movie_name
    movie_name = re.findall(pattern, res.text)[0]  # list类型

    res.encoding = 'utf-8'

    if (res.status_code == 200):
        print("\n第{}页短评爬取成功!".format(page + 1))
        print(url)
    else:
        print("\n第{}页爬取失败!".format(page + 1))

    with open('html.html', 'w', encoding='utf-8') as f:
        f.write(res.text)
        f.close()
        
    x = etree.HTML(res.text)
    for i in range(1, 21):   # 每页20个评论用户
        name = x.xpath('//*[@id="comments"]/div[{}]/div[2]/h3/span[2]/a/text()'.format(i))
        # 下面是个大bug,如果有的人没有评分,但是评论了,那么score解析出来是日期,而日期所在位置spen[3]为空
        score = x.xpath('//*[@id="comments"]/div[{}]/div[2]/h3/span[2]/span[2]/@title'.format(i))
        date = x.xpath('//*[@id="comments"]/div[{}]/div[2]/h3/span[2]/span[3]/@title'.format(i))
        m = '\d{4}-\d{2}-\d{2}'
        try:
            match = re.compile(m).match(score[0])
        except IndexError:
            
  • 5
    点赞
  • 120
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值