查看原文
其他

Stata爬豆瓣和烂番茄——国内外的观影口味果然大不同

爬虫俱乐部 Stata and Python数据分析 2023-10-24

本文作者:金点,中南财经政法大学金融学院

本文编辑:赵微微

技术总编:李婷婷

Stata and Python 数据分析

     由李春涛教授团队成员司海涛薛原编写的《Stata正则表达式及其在财务数据中的应用》终于和大家见面啦!爬虫俱乐部特此为大家准备了100本,即日起购买爬虫俱乐部课程,可赠送本书一本,先到先得!


购书链接:


爬虫俱乐部Stata基础课程Stata进阶课程Python课程可在小鹅通平台查看,欢迎大家多多支持订阅!如需了解详情,可以通过课程链接(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或课程二维码进行访问哦~

引言
《黑豹2》将于11月11日北美上映,引发国内外电影发烧友的期待,黑豹系列第一部不仅是首部入围奥斯卡最佳影片的超级英雄电影,而且最终拿回了三项大奖。回顾2022年奥斯卡,最佳影片奖花落《健听女孩Coda》,获得了3项奥斯卡提名,并将三项大奖都揽入怀中。而史诗大片《沙丘Dune》更是获得6项艺术特效奖。
部分名单:
01最佳影片《健听女孩》该片讲述了一个聋哑家庭中唯一有听觉的高中女孩鲁比,她每天都要帮助父母和哥哥操持渔业生意,在加入高中合唱团后,鲁比对歌唱的热爱打动了合唱团长,团长决定让鲁比在梦想和家族之间做一个选择。
02最佳导演简·坎皮恩(Jane Campion),《犬之黎》,该西部片改编自托马斯·萨维奇的同名小说,讲述了菲尔在弟弟乔治与寡妇萝丝结婚后,用各种方法霸凌萝丝母子,却走向了意想不到的结局的故事。03最佳男演员威尔·史密斯《国王理查德》,讲述了理查德·威廉姆斯的真实故事,这位精明务实、不屈不挠、没有任何网球背景的父亲培养出了两个网球天才,她们后来成了超级巨星。04最佳女演员杰西卡·查斯坦《塔米·菲的眼睛》,该片改编自2000年的同名传记片,讲述了塔米·菲和吉姆·贝克这对夫妇作为电视福音布道家的大起大落的故事。05最佳原创歌曲007:无暇赴死:比莉艾利什《No time to die06最佳动画长片《魔法满屋》,该片讲述在一个人人都有魔法天赋的大家庭里,唯一的普通少女米拉贝却成为拯救魔法危机的最后希望的故事 。07《沙丘》《沙丘》获得了最佳摄影、最佳剪辑、最佳艺术指导、最佳原创配乐、最佳声音效果、最佳视觉效果奖项。该科幻片改编自弗兰克·赫伯特的同名小说,讲述了控制着珍贵资源的厄崔迪家族在遭遇背叛后,家族的继承人保罗决定接受命运的指引,去保卫自己的家族和人民的故事。奥斯卡获奖影片你看过几部呢?究竟国内外对于电影的品味相差有多大呢?每个人看电影的喜好,的确主观。但样本大了之后,你也会发现,国内、国外对电影的评价,仍然很有地域差异。例如,同样一部电影,豆瓣上拿下超高分,在烂番茄上,可能就只是马马虎虎而已。01
数据来源
中国人究竟更喜欢什么样的电影?想要研究这个问题,我们需要一个样本——最方便使用的,自然就是豆瓣TOP250的片单。

1.豆瓣电影TOP250

豆瓣用户每天都在对“看过”的电影进行“很差”到“力荐”的评价,豆瓣根据每部影片看过的人数以及该影片所得的评价等综合数据,通过算法分析产生豆瓣电影 Top 250。

在哪里可以找到国外对这些电影的评分?如果是对于国外电影比较感兴趣的人一定会想到——烂番茄这个网站。

2.烂番茄

烂番茄(ROTTEN TOMATOES)是美国一个网站,以提供电影相关评论、资讯和新闻为主,其母公司为IGN Entertainment,由加州大学伯克利分校的三位在校学生Senh Duong、Patrick Lee、Stephen Wang创建,该网站已经成为国外电影消费者和影迷的首选目的地。
而烂番茄的评分人,分为TOMATOMETER和AUDIENCE SCORE,AUDIENCE SCORE是普通观影者,而TOMATOMETER则是一群对电影更了解的人,包括媒体、大v、电影博主。

与豆瓣不同,他们只需要判定这部电影是否“新鲜”,也就是是否“及格”。最后显示的烂番茄新鲜度,表示百分之多少的人认为这部电影合格。02

爬取豆瓣TOP250榜单


1.爬虫前的准备

首先,确定我们要爬取的网页(https://movie.douban.com/top250)。通过观察我们发现,一共有10页,其中每一页存放着25部影片的信息。因此这里我们需要运用循环遍历这10个页面。接着,鼠标右击查看网页源代码,我们发现所需的数据均存在于当前网页源代码中。

2.爬虫开始

*数据读入*使用copy爬取网页,随后使用fileread()函数将网页源代码读入Stata中。clear allcap mkdir "E:\电影爬虫\豆瓣top100"cd "E:\电影爬虫\豆瓣top100"forvalues i =0(25)225 {clearcopy "https://movie.douban.com/top250?start=`i'&filter=" temp.txt, replaceset obs 1gen v = fileread("temp.txt")
*获取影片的英文名并保存*由于有些电影并没有英文名,因此使用正则表达式只定位到有英文名的电影preservesplit v, p(`"<span class="title">&nbsp;/&nbsp;"' `"<span class="other">"')sxpose, clearkeep if ustrregexm(_var1, "^[A-Z]+|^[0-9]+") //保留所有大写字母开头或者数字开头的电影名replace _var1 = ustrregexra(_var1, "<.*?>", "")replace _var1 = ustrregexra(_var1, "\s{2,}", "")rename _var1 enggen id = _n+`i'compresssave 影片英文名, replacelevelsof eng, local(films)restore
*获取影片的评分split v, p(`"<span property="')drop vsxpose, cleargen count = .foreach film in `films' { replace count = 1 if index(_var1, `"`film'"')}keep if count == 1gen score = ustrregexs(0) if ustrregexm(_var1,`"(?<=property="v:average">).+?(?=</span>)"')keep scoregen id = _n+`i'compresssave 影片评分, replace
*合并merge 1:1 id using 影片英文名drop _msave `=`i'+1'~`=`i'+25', replace}clearforvalues i =0(25)225 {append using `=`i'+1'~`=`i'+25'}drop idgen id = _n
*处理一些特殊符号replace eng = ustrregexra(eng, "&#39;", "'")replace eng = ustrregexra(eng, "&amp;", "&")save 豆瓣影片英文, replace
*更改为烂番茄格式use 豆瓣影片英文, clearreplace eng = ustrregexra(eng, "^The ", "")replace eng = ustrregexra(eng, "^A ", "")replace eng = ustrregexra(eng, "'", "")replace eng = ustrregexra(eng, ":", "")replace eng = ustrregexra(eng, " ", "_")save 豆瓣烂番茄格式, replace03

爬取整个豆瓣影片烂番茄清单


通过对烂番茄网站的观察,只需要改变网址最后的电影名便可以跳转到该影片的评分页面,因此获得了豆瓣TOP250中的英文电影名便可以通过循环遍历得到其在烂番茄网上的评分。
*使用宏定位到被循环遍历的豆瓣电影英文名clear allcap mkdir "E:\电影爬虫\豆瓣top100"cd "E:\电影爬虫\豆瓣top100"clearuse 豆瓣烂番茄格式, clearlevelsof eng,local(films)
*获取local中每一个电影的烂番茄评分*其中,如果某个电影在烂番茄中搜索不到,便使用continue跳过次循环,进入下一个循环。local i 1foreach film in `films' { clear cap copy "https://www.rottentomatoes.com/m/`film'" `film'.txt, replace if fileexists("`film'.txt")==0 { continue } infix strL v 1-100000 using `film'.txt, clear replace v = ustrfrom(v,"utf-8",1) keep if strpos(v,`"audiencescore=""') | strpos(v,`"tomatometerscore=""') sxpose,clear gen ascore = ustrregexs(0) if ustrregexm(_var1, "\d{2}") gen tscore = ustrregexs(0) if ustrregexm(_var2, "\d{2}") drop _var1 drop _var2 disp `"`film'"' gen eng=`"`film'"' local ++i save film`i',replace}
*合并cd "E:\电影爬虫\豆瓣top100"local film: dir . files "film*.dta"foreach f in `film' { append using `f'}save 评分, replace
use 评分, clearmerge m:1 eng using 豆瓣烂番茄格式drop _mdrop iddrop if ascore=="" & tscore==""replace ascore = ustrregexra(ascore, "10", "100")replace tscore = ustrregexra(tscore, "10", "100")save 总评分, replace04

进行相关性分析


use 总评分, cleardrop if ascore=="" | tscore==""destring score ascore tscore , replacegen _score = score*10***获得相关性的显著性检验pwcorr score ascore tscore, sidak sig 

score与ascore的相关系数是0.3571,score与tscore的相关系数是0.2550,这个相关系数越大说明两个变量之间的关系越紧密,也就是说豆瓣评分与烂番茄中的TOMATOMETER专业影评人评分的相关性低于其与烂番茄中普通观众的评分。score与ascore的相关性显著性p值是0.0005,score与tscore的相关性显著性p值是0.0248。在这我们假设他们是相关性不大,p值小于0.01则推翻假设。这里明显看出score和ascore推翻假设说明两个变量之间相关性较强,而score和tscore接受原假设两个变量之间相关性不强。即豆瓣评分与烂番茄中的TOMATOMETER专业影评人测评的烂番茄新鲜度并没有很强的相关性。

结论由上文相关性分析可知,国际影界的口味并不相同。在国人眼里评分很高的豆瓣TOP电影在外网的评分并不相同。综上所述,可以得出结论:国内外的观影口味果然大不同!

(END)重磅福利!为了更好地服务各位同学的研究,爬虫俱乐部将在小鹅通平台上持续提供金融研究所需要的各类指标,包括上市公司十大股东、股价崩盘、投资效率、融资约束、企业避税、分析师跟踪、净资产收益率、资产回报率、国际四大审计、托宾Q值、第一大股东持股比例、账面市值比、沪深A股上市公司研究常用控制变量等一系列深加工数据,基于各交易所信息披露的数据利用Stata在实现数据实时更新的同时还将不断上线更多的数据指标。我们以最前沿的数据处理技术、最好的服务质量、最大的诚意望能助力大家的研究工作!相关数据链接,请大家访问:(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或扫描二维码:

最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。


对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!







往期推文推荐        邮箱附件太多?Python帮你批量下载!      正则表达式之多次匹配

        爬虫君为你的数据自由操碎了心!cnborder重磅推出!

      基于Python的假设检验实现      Stata与MySQL交互--基础操作           Jupyter Notebook中的魔术命令     《Stata正则表达式》由中国金融出版社出版发行          匿名函数lambda到底怎么用?

Stata绘图系列—NBER Working paper仿图

       Camelot:从PDF中提取表格数据      Stata之计算财务指标——融资约束

      列表生成式|让你的代码更简洁

Stata绘图系列——玩转绘图通用选项之坐标轴

       玩转地图的好帮手--pyecharts

       爬虫俱乐部又又又输送了一位研究助理!!!      【数据分析】一文教你玩转DataFrame

 震惊,爬虫俱乐部竟是这样运营答疑群的?!

【数据分析-入门】一看就会!Numpy的创建、索引、切片与更新

带你玩转Stata编码一言不合就teamviewer     关于我们 

   微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

   武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。



此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里
为作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可

以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

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

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