“好哭”是衡量一部好电影的标准吗?
发布于 2021-10-18 10:32
本文作者:崔赵雯,中南财经政法大学金融学院
本文编辑:王玉洁
技术总编:戴 雯
Stata&Python云端课程来啦!
哈喽啊,铁铁们~前不久上映的一部电影《关于我妈的一切》,被观众评为“今年最好哭的电影”。该影片从女儿的视角讲述了身患癌症的妈妈在得知自己时日无多后,积极改变全家人生活态度的故事,可谓是肉眼可见的“好哭”。进了电影院,带入故事情节后,基本都逃不掉“摁头哭”。对于这样一部催泪煽情的电影,让我们看看影迷们对该片是如何评价的吧~
可以看到发布时间和评论标题是可以直接提取的,而评论的具体内容需要进一步点开url才能获得。分析完源代码,我们就可以大显身手了~话不多说,上程序!
*获取单个网页评论发布时间、评论标题和url
clear all
cap mkdir d:/豆瓣影评
cd d:/豆瓣影评
copy "https://movie.douban.com/subject/35196097/reviews?start=0" temp.txt,replace
infix strL v 1-100000 using temp.txt, clear
preserve
keep if index(v,`"<span content=""') //保留包含<span content="的行
replace v=ustrregexra(v,"<.*?>","") //把<>之间的内容替换为空
rename v time
save time.dta,replace
restore
keep if index(v,`"<h2><a href="') //保留包含<h2><a href="的行
split v,p(`"""') //用双引号作为分隔符分割
rename v2 url //重命名v2为url
split v3,p(">") //用>作为分隔符分割
split v32,p("<") //用<作为分隔符分割
rename v321 title
keep url title
merge using time
drop _merge
save "影评1.dta",replace
*获取单个网页的评论内容
clear
cap mkdir d:/豆瓣影评/二次爬取
cd d:/豆瓣影评/二次爬取
use /Users/cc/Desktop/cc的推文/豆瓣影评/影评1.dta,clear
gen v=""
forvalues i=1/`=_N'{
replace v=fileread(url) in `i'
while filereaderror(v[`i'])!=0 {
sleep 5000
replace v=fileread(url) in `i'
}
}
split v,p(`"<div id="link-report">"' `"<div class="copyright">"')
keep v2
replace v2 = ustrregexra(v2,"\s","",.) //删去v2中的空白符
replace v2 = ustrregexra(v2, "<.*?>", "",.) //把<>之间的内容替换为空
rename v2 content
save "影评内容1.dta",replace
clear all
cap mkdir d:/豆瓣影评
cd d:/豆瓣影评
infix strL v 1-100000 using temp.txt, clear
keep if index(v,`"<span class="thispage" data-total-page="')
replace v=ustrregexs(0) if ustrregexm(v,"(\d+)")
local p=v[1]
forvalues i=1/`p'{
local j=(`i'-1)*20
cap copy "https://movie.douban.com/subject/35196097/reviews?start=`j'" temp.txt,replace
infix strL v 1-100000 using temp.txt,clear
preserve
keep if index(v,`"<span content=""')
replace v=ustrregexra(v,"<.*?>","")
rename v time
save time.dta,replace
restore
keep if index(v,`"<h2><a href="')
split v,p(`"""')
rename v2 url
split v3,p(">")
split v32,p("<")
rename v321 title
keep url title
merge using time
drop _merge
save "影评`i'.dta",replace //第i条评论对应的url、title、time保存为影评i.dta
}
clear
local files:dir "." file "影评*.dta"
foreach file in `files'{
append using "`file'" //把上面生成的影评i.dta合并起来
}
save "影评.dta",replace
gen v=""
forvalues i=1/`=_N'{
replace v=fileread(url) in `i'
while filereaderror(v[`i'])!=0 {
sleep `=int(runiform()*5000+5000)' //随机休息5-10秒
replace v=fileread(url) in `i'
}
sleep `=int(runiform()*5000+5000)'
}
split v,p(`"<div id="link-report">"' `"<div class="copyright">"')
keep v2
replace v2 = ustrregexra(v2,"\s","",.)
replace v2 = ustrregexra(v2, "<.*?>", "",.)
rename v2 content
merge using "影评.dta"
drop _merge
order (time url title content)
save "影评.dta",replace
*分词处理
*导出为txt文档
use 影评.dta,clear
keep content
export delimited using content.txt,replace
*调用Python分词
clear all
python
import jieba.posseg
word=[]
with open(r"content.txt",encoding="utf-8") as f:
for i in f.readlines():
str=i
word.append(str)
jieba.load_userdict(r"dict.txt")
with open("分词.txt","w",encoding="utf-8") as f2:
for unit in word:
seg_list = jieba.posseg.cut(unit)
for word in seg_list:
f2.write(word.word+" "+word.flag+"\n")
end
*分词结果导入Stata,并删除单字、缺失值、停用词
import delimited using 分词.txt, clear encoding("utf-8")
split v1,p(" ")
drop v1
rename (v11 v12) (keyword flag)
drop if ustrlen(keyword) == 1 // 删除单字
drop if keyword =="" //删除缺失值
preserve
import delimited using 停用词表.txt, clear ///
encoding("utf-8") varname(nonames)
outsheet using 停用词表.txt, replace nonames noquote
levelsof v1, local(keyword)
restore
foreach word in `keyword' {
drop if keyword == "`word'" //删除停用词
}
*词频统计
bysort keyword: gen frequency = _N
gsort -frequency
duplicates drop
save word,replace
*在分词结果中只保留动词、名词和形容词并绘制词云图:
use word,clear
keep if ustrregexm(flag, "^[anv]")
keep in 1/100
wordcloud keyword frequency using 词云.html, replace size(15 80) range(3840 2160)
shellout 词云.html
这部描述母女之间温情的电影,唤起了观众对母爱的记忆,真正催泪的是所有的珍惜与失去。多陪陪这个世界上最喜欢你的人吧~
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
带你了解Stata中的矩阵
爬虫实战 | 爬取东方财富网经济数据——以居民消费价格指数(CPI)为例
万物皆可开——shellout妙用
无处不在的系列配置项|从零开始的Pyecharts(三)
使用Python制作自动聊天机器人
fillin一下,平衡回来~
播放列表中的歌单排行
在Stata中轻松运用program编写命令
芒果TV视频弹幕爬取之《我在他乡挺好的》
Stata中的判断神器——confirm命令
最近《扫黑风暴》有点火爆!我从豆瓣评论中发现了这些……
随机森林-Random Forest
复原之神--preserve&restore
Stata助力疫情打卡管理——是谁没有接龙呢?
【案例展示】Python与数据库交互
玩转Stata中的数学函数
关于我们
武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。
此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。
本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。
相关素材