《攀登者》影评爬取及分析

0、项目结构

其中simkai.ttf为字体文件,Windows查看系统自带的字体

C:\Windows\Fonts

一、爬取豆瓣影评数据

# -*- coding: utf-8 -*-

"""爬取豆瓣影评"""

import requests

from lxml import etree

import time

url = "https://movie.douban.com/subject/30413052/comments?start=%d&limit=20&sort=new_score&status=P"

#请求头

headers = {'Host': 'movie.douban.com',

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0',

'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',

'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',

#'Accept-Encoding': 'gzip, deflate, br',

'Connection': 'keep-alive',

'Cookie': 'bid=TXwfIvNFTRE; douban-fav-remind=1; __gads=ID=e042951d078c30b3:T=1570518321:S=ALNI_Mbp-ZmoryuBFEnTQy24mwdf0B89ig; __utma=30149280.1448315194.1570518324.1570518324.1572927825.2; __utmz=30149280.1570518324.1.1.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; _pk_id.100001.4cf6=589509e524ead00f.1572927824.1.1572927824.1572927824.; _pk_ses.100001.4cf6=*; __utmb=30149280.0.10.1572927825; __utmc=30149280; __utma=223695111.1094105223.1572927825.1572927825.1572927825.1; __utmb=223695111.0.10.1572927825; __utmc=223695111; __utmz=223695111.1572927825.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); ap_v=0,6.0',

'Upgrade-Insecure-Requests': '1',

'Cache-Control': 'max-age=0'}

if __name__ == '__main__':

f = open("./climb.csv", mode="w", encoding='utf-8')

f.write("author\tcomment\tvotes\n")

#start:0,20,40,...,200

for i in range(11):#range左闭右开

#1拼接url,只能获取前11页数据

if i == 10:#最后一页

url_climb = url%(200)

else:

url_climb = url%(i*20)

#2发起请求,设置编码,获取文本内容

response = requests.get(url_climb, headers = headers)

response.encoding = "utf-8"

text = response.text

#存储

#with open("./climb.html", mode="w", encoding="utf-8") as f:

# f.write(text)

#使用etree解析

html = etree.HTML(text)

comments = html.xpath('//div[@id="comments"]/div[@class="comment-item"]')

for comment in comments:

#获取评论人

author = comment.xpath('./div[@class="avatar"]/a/@title')[0].strip()

#获取评论内容

p = comment.xpath('.//span[@class="short"]/text()')[0].strip()

#获取这条评论对应的点赞数

vote = comment.xpath('.//span[@class="votes"]/text()')[0].strip()

#print(author, p, vote)

f.write("%s\t%s\t%s\n" % (author,p,vote))

#打印提示信息,并休眠一秒,反爬虫

print("第%d页的数据保存成功" % (i+1))

time.sleep(1)

f.close()

二、对评论信息进行情感分析

# -*- coding: utf-8 -*-

"""

pandas:python data analysis lib,返回值为DataFrame(行,列),行是样本,列为属性

"""

import pandas as pd

from snownlp import SnowNLP

# 显示所有列

pd.set_option('display.max_columns', None)

def convert(comment):

"""将传入的评论进行情感分析"""

snow = SnowNLP(str(comment))

sentiments = snow.sentiments#0(消极评论)-1(积极评论)

return sentiments

if __name__ =='__main__':

data = pd.read_csv('./climb.csv', '\t')

#print(data.head(), "\n", data.shape)

#获取评论数据,进行情感分析,DataFrame就会新增加一列名为‘情感评分’的数据

data['情感评分'] = data.comment.apply(convert)

data.sort_values(by='情感评分', ascending=False, inplace=True)

#保存数据

data.to_csv('./climb_snownlp.csv', sep='\t', index=False, encoding='utf-8')

print(data[:5])

print(data[-5:])

三、对评论数据进行jieba分词,生成关键词条形图和词云

# -*- coding: utf-8 -*-

import pandas as pd

import jieba

from jieba import analyse

import matplotlib.pyplot as plt

import numpy as np

import wordcloud

from PIL import Image

if __name__ == '__main__':

data = pd.read_csv('./climb.csv', sep='\t')

#列表生成式,获取所有评论信息

comments = ';'.join([str(c) for c in data['comment'].tolist()])

#print(comments)

#使用jieba库对文本进行分词,返回的是生成器

gen_ret = jieba.cut(comments)

seg_words = '/'.join(gen_ret)

#print(seg_words)

#对分好的词进行分析,topK返回的关键词个数,withWeight带着权重

tags_ret = analyse.extract_tags(seg_words, topK=500, withWeight=True)

#print(tags_ret)

#将数据转换成DataFrame

df_ret = pd.DataFrame(tags_ret, columns=['词语', '重要性'])

df_ret.sort_values(by='重要性', ascending=False, inplace=True)#根据重要性降序排列

#print(df_ret)

#可视化,500个词语,选取前20个分析

plt.barh(y=np.arange(0,20), width=df_ret[:20]['重要性'][::-1])

plt.ylabel('Importance')

plt.yticks(np.arange(0,20), labels=df_ret[:20]['词语'][::-1], fontproperties='KaiTi')

#保存条形图!!!保存代码一定要写在show之前,dpi表示屏幕像素密度

plt.savefig('./条形图_20个keyword.jpg', dpi=200)

plt.show()

#词云操作

bg = np.array(Image.open('./bg.jpg'))#词云的图片

words = dict(tags_ret)#将标签转为词典

cloud = wordcloud.WordCloud(width=1200, height=968,

font_path='./simkai.ttf',#字体路径

background_color='white', mask=bg,

max_words=500, max_font_size=150)

#生成词云图片

word_cloud = cloud.generate_from_frequencies(words)

plt.figure(figsize=(12,12))

plt.imshow(word_cloud)

#词云保存

plt.savefig('./攀登者词云.jpg', dpi=200)

plt.show()

python影评_python爬虫及结巴分词《攀登者》影评分析相关推荐

  1. python爬虫影评_Python爬虫-爬取杀破狼豆瓣影评并小作分析~

    也是前几天看到一个公众号推了一篇文章,是爬取战狼的影评.今天自己也来试一下 我选择爬的是<杀破狼> image.png 然后就是打开短评页面,可以看到comment-item,这就是影评了 ...

  2. python爬虫影评_python爬虫实战一:分析豆瓣中最新电影的影评

    简介 刚接触python不久,做一个小项目来练练手.前几天看了<战狼2>,发现它在最新上映的电影里面是排行第一的,如下图所示.准备把豆瓣上对它的影评(短评)做一个分析. 目标总览 主要做了 ...

  3. python爬虫豆瓣电影评价_Python 爬虫实战(1):分析豆瓣中最新电影的影评

    目标总览 主要做了三件事: 抓取网页数据 清理数据 用词云进行展示 使用的python版本是3.6 一.抓取网页数据 第一步要对网页进行访问,python中使用的是urllib库.代码如下: from ...

  4. 推荐一部python教程_Python爬虫入门教程:博客园首页推荐博客排行的秘密

    1. 前言 虽然博客园注册已经有五年多了,但是最近才正式开始在这里写博客.(进了博客园才知道这里面个个都是人才,说话又好听,超喜欢这里...)但是由于写的内容都是软件测试相关,热度一直不是很高.看到首 ...

  5. python 爬虫 包_python爬虫学习之路-抓包分析

    利用浏览器抓包,是爬虫中的很实用的技能.在爬虫编程之前,我们要对抓取的目标页面有所了解,比如浏览器的这个请求这个页面中间都经历了什么,数据是怎么发送和返回的. 抓包的作用 我把抓包分析的作用简单列一下 ...

  6. python爬取股票评论_Python爬虫股票评论,snowNLP简单分析股民用户情绪

    原标题:Python爬虫股票评论,snowNLP简单分析股民用户情绪 一.背景 股民是网络用户的一大群体,他们的网络情绪在一定程度上反映了该股票的情况,也反映了股市市场的波动情况.作为一只时间充裕的研 ...

  7. python 豆瓣评论数据分析_Python爬虫实战案例:豆瓣影评大数据分析报告之网页分析...

    个人希望,通过这个完整的爬虫案例(预计总共4篇短文),能够让爬虫小白学会怎么做爬虫的开发,所以在高手们看来,会有很多浅显的废话,如果觉得啰嗦,可以跳过一些内容~ 上一篇文章给大家简单介绍了Python ...

  8. python爬虫影评_Python爬虫(二十)_动态爬取影评信息

    本案例介绍从JavaScript中采集加载的数据.更多内容请参考:Python学习指南 #-*- coding:utf-8 -*- import requests import re import t ...

  9. python关键词提取源码_Python 结巴分词 关键词抽取分析

    关键词抽取就是从文本里面把跟这篇文档意义最相关的一些词抽取出来.这个可以追溯到文献检索初期,当时还不支持全文搜索的时候,关键词就可以作为搜索这篇论文的词语.因此,目前依然可以在论文中看到关键词这一项. ...

最新文章

  1. ubuntu中忘记root密码的解决方法
  2. 【python 6】Numpy
  3. 【ArcGIS风暴】捕捉VS经典捕捉,谁更有用武之地?
  4. VMware vCenter升级杂谈
  5. 不是赚钱太难,妄想天上掉馅饼,才是导致贫穷的根源
  6. oracle组合索引最左原则,复合索引最左原则 -- 实战
  7. sql server 触发器
  8. Atitit。 《吠陀》 《梨俱吠陀》overview 经读后感  是印度上古时期一些文献的总称
  9. 部署容器jenkins_使用Jenkins部署用于进行头盔检测的烧瓶容器
  10. 流固耦合仿真案例及教学
  11. 大数据之路、阿里巴巴大数据实践读书笔记目录
  12. hadoop安装配置实验报告
  13. Road to Coder _Game
  14. mysql int_mysql中int(10)代表什么意思?
  15. 计算机程序判断素数(一)
  16. 携程2021春招笔试
  17. loopback地址是什么?怎么配置
  18. docker GitLab-runner CI/CD持续集成
  19. 2012-2013-1 (实变函数56, 高等数学84)
  20. Python 代码理解 polygon.py

热门文章

  1. 从0单排:学风侏儒——小样本学习11-18年
  2. 算法题:10级台阶,一次一步或两步,打印所有的走法
  3. 织梦模板文章的图片路径问题
  4. LuaBoy-Lua编辑器构想
  5. ubuntu 配置拼音输入法步骤
  6. 深度学习系列-前言:深度学习的好教程
  7. Scientists discover how mosquitoes detect human sweat-由于嗅觉受体的存在,蚊子会被人体汗液中的乳酸所吸引,
  8. vins 解读_VINS-mono详细解读
  9. 编译原理之形式语言文法分类
  10. 【物联网那些事儿】18 大物联网操作系统,Raspbian Pi、Ubuntu Core、Windows 10 IoT、Micropython、OpenWrt ....你用过哪几个?