失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 爬取豆瓣短评之《后来的我们》-------后来的我们没有故事

爬取豆瓣短评之《后来的我们》-------后来的我们没有故事

时间:2022-12-08 15:40:54

相关推荐

爬取豆瓣短评之《后来的我们》-------后来的我们没有故事

昨天《后来的我们》上映了,相信大家有点小期待吧。毕竟,影片的主题曲《我们》,早就虐哭了不少人。电影能否跟歌曲一样深入人心?怀着这样的一种心情,下面就来看一下它的影评如何吧。

1.抓数据

通过试探知道:豆瓣影评设置权限,没有登陆的话,只能够看到前面的几十条短评,并且登录的时候需要输入验证码。所以考虑使用selenium来获取数据。

登录时需要的验证码,通过保存图片,然后手动输入

所以构造两个方法

# 登录def login(url,username,password):brower.get(url)brower.find_element_by_css_selector('[class="nav-login"]').click()name = brower.find_element_by_id('email')name.clear()name.send_keys(username)pwd = brower.find_element_by_id('password')pwd.clear()pwd.send_keys(password)pic_src = brower.find_element_by_id('captcha_image').get_attribute('src')#调用获取验证码的方法cap_value = get_yzm(pic_src)yan_zheng_ma = brower.find_element_by_id('captcha_field')yan_zheng_ma.clear()yan_zheng_ma.send_keys(cap_value)brower.find_element_by_css_selector('[class="btn-submit"]').click()print('登陆成功')# 获取验证码def get_yzm(src):print("正在保存验证码图片")captchapicfile = "D:/pycharm/PycharmProjects/next_our/captcha.png"urllib.request.urlretrieve(src, filename=captchapicfile)print("请打开图片文件,查看验证码,输入单词......")captcha_value = input()return captcha_value

登陆成功之后,通过搜索框搜索《后来的我们》,进入详情页,随后进入短评列表

需要获取昵称,短评和赞同数

每一个步骤我们都构建一个方法

# 搜索电影def seach(movie_name):inp_query = brower.find_element_by_id('inp-query')inp_query.clear()inp_query.send_keys(movie_name)submit = brower.find_element_by_css_selector('[type="submit"]')submit.click()sleep(1)brower.find_element_by_xpath('//*[@id="root"]/div/div[2]/div[1]/div[1]/div[1]/div[1]/div/div[1]/a').click()print("进入详情页")# 进入短评列表def into_comment():brower.find_element_by_xpath('//*[@id="comments-section"]/div[1]/h2/span/a').click()print("进入短评列表")# 获取短评def get_comment():wait.until(lambda brower : brower.find_element_by_css_selector('[class="next"]'))sleep(1)for i in range(1,21):comment = brower.find_element_by_xpath('//*[@id="comments"]/div[{}]/div[2]/p'.format(str(i))).textcomment_name = brower.find_element_by_xpath('//*[@id="comments"]/div[{}]/div[2]/h3/span[2]/a'.format(str(i))).textvotes = brower.find_element_by_xpath('//*[@id="comments"]/div[{}]/div[2]/h3/span[1]/span'.format(str(i))).text#构建字典data = {'comment': comment,'comment_name': comment_name,'votes': int(votes)}comments.insert_one(data)print('*'*100)print(data)print('成功存入数据库')

还有最重要的一步就是,需要进行翻页,然后重新获取短评信息

#翻页def next_page():next = brower.find_element_by_css_selector('[class="next"]')try:next.click()except:logging.info("全部完成了")

ps:由于技术较渣,所以直接跳到最后一页,发现只有24页,所以直接使用循环了<~_~>

#使用PhantomJSbrower = webdriver.PhantomJS(executable_path="D:/phantomjs-2.1.1-windows/bin/phantomjs.exe")wait = ui.WebDriverWait(brower,10)# 数据库client = pymongo.MongoClient('localhost',27017)next_our = client['next_our']comments = next_our['comments']URL = '/'username = '你的豆瓣账号'password = '你的密码'movie = '后来的我们‎'if __name__=="__main__":login(URL,username,password)seach(movie)into_comment()for page in range(24):get_comment()next_page()

2.数据处理

在获取到数据之后,制作成图表,让我们更加直观的看到大体情况

series =[{'name':'评论点赞数','data':[i for i in vote_list],'type':'column'}]charts.plot(series,show='inline',options=dict(title=dict(text='评论点赞数')))

从图中可以看出短评中最受欢迎的大概有2500票,并且大部分集中在前排,(这是后面没有多少人看,所以点赞少?)

咳咳。。。前排很重要呀

接下来把所有的评论制作成云图

text=open('comment_list.txt', 'r',encoding='utf-8')mytext=text.read()cut = jieba.cut(mytext,cut_all=True)split_cut ='/'.join(cut)wc = WordCloud(background_color = "white", #设置背景颜色 max_words = 2000, #设置最大显示的字数 margin=5,font_path="C:\\Windows\\Fonts\\STFANGSO.ttf",#不加这一句显示口字形乱码max_font_size = 80, #设置字体最大值 random_state = 40, #设置有多少种随机生成状态,即有多少种配色方案 ) mword =wc.generate(split_cut)plt.imshow(mword)plt.axis("off")plt.show()

得到下面的云图:

从图中看到,大部分在评论周冬雨、感慨我们后来没有故事

ps:数据是4/29晚所爬取的

接下来统计一下赞同数前十的评论

ps:以上评论均来自豆瓣影评

3.总结

或许是主题曲提前预热了市场,让观众的期望值变高了,《后来的我们》在豆瓣上的评分只有6.2分,并且现在又出现了退票事件。

单就电影来说,感觉还是可以的。或许是豆瓣的用户眼光有点高了。

爱情有一种结局,是后来的我们,只能从情侣变成爱了很久的朋友。

电影有句很扎心的文案,“再后来,我什么都有了,却独独没有了我们”

希望我们好好珍惜。

如果觉得《爬取豆瓣短评之《后来的我们》-------后来的我们没有故事》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。