【python 自然语言处理】对胡歌【猎场】电视剧评论进行情感值分析_I-Love-IT的博客-程序员秘密

技术标签: 算法  爬虫  python  

本文基于python3.5编写,如果使用python2.7,只需要修改编码部分和print部分即可。


豆瓣猎场短评爬虫


# encoding: utf-8


import re

import requests

import codecs

import time

import random

from bs4 import BeautifulSoup

absolute = 'https://movie.douban.com/subject/26322642/comments'

absolute_url = 'https://movie.douban.com/subject/26322642/comments?start=20&limit=20&sort=new_score&status=P&percent_type='

url = 'https://movie.douban.com/subject/26322642/comments?start={}&limit=20&sort=new_score&status=P'

header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:54.0) Gecko/20100101 Firefox/54.0','Connection':'keep-alive'}



def get_data(html):

    soup=BeautifulSoup(html,'lxml')

    comment_list = soup.select('.comment > p')

    next_page= soup.select('#paginator > a')[2].get('href')

    date_nodes = soup.select('.comment-time')

    return comment_list,next_page,date_nodes



if __name__ == '__main__':


    ########先登录豆瓣,把cookie复制放在cookie.txt

    f_cookies = open('cookie.txt', 'r')

    cookies = {}

    for line in f_cookies.read().split(';'):

        name, value = line.strip().split('=', 1)

        cookies[name] = value

    html = requests.get(absolute_url, cookies=cookies, headers=header).content


    # print html

    comment_list = []

    # 获取评论

    comment_list, next_page,date_nodes= get_data(html)

    soup = BeautifulSoup(html, 'lxml')

    comment_list = []

    while (next_page != []):  #查看“下一页”的A标签链接

        print(absolute + next_page)

        html = requests.get(absolute + next_page, cookies=cookies, headers=header).content

        soup = BeautifulSoup(html, 'lxml')

        comment_list, next_page,date_nodes = get_data(html)



        with open(u"comments.txt", 'a+')  as f:

            for node in comment_list:

                comment = node.get_text().strip().replace("\n", "")

                print comment

                f.writelines(comment + u'\n')

        time.sleep(1 + float(random.randint(1, 100)) / 20)



猎场热门短评情感分析

下面我们对猎场热门短评基于原有 SnowNLP 进行积极和消极情感分类,读取每段评论并依次进行情感值分析,最后会计算出来一个 0-1 之间的值。

# encoding: utf-8

import numpy as np

from snownlp import SnowNLP

import matplotlib.pyplot as plt




comment = []

with open('comments.txt', mode='r') as f:

    rows = f.readlines()

    for row in rows:

        if row not in comment:

            comment.append(row.strip('\n'))



def snowanalysis(self):

    sentimentslist = []

    for li in self:

        s = SnowNLP(li.decode('utf-8'))

        print li

        print  s.sentiments

        sentimentslist.append(s.sentiments)

    plt.hist(sentimentslist, bins=np.arange(0, 1, 0.01))

    plt.show()



if __name__ == '__main__':


    snowanalysis(comment)


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_38197294/article/details/78659620

智能推荐

编译opencv3.2时遇到的问题(VS2015)_opencv3 不编译第三方_char_c的博客-程序员秘密

本文主要是回顾准备编译、编译过程中的感想,并没有详细的专业教程提供。 事情开始于做opencv官网一个tutorial——Image Watch: viewing in-memory images in the Visual Studio debugger(自己去找一下吧,写博文的时候opencv官网一些页面打不开),要利用VS调试器+ImageWatch插件对图片的相关细节进行查看。我的open

51Nod 1118 机器人走方格 (排列组合)_Calm微笑的博客-程序员秘密

1118 机器人走方格基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注M * N的方格,一个机器人从左上走到右下,只能向右或向下走。有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10^9 + 7的结果。Input第1行,2个数M,N,中间用空格隔开。(2

.net core 中 DefaultIfEmpty和FirstOrDefault区别_coolwf2008的博客-程序员秘密

方法返回集合中的第一个元素,如果集合为空,则返回默认值。如果在查询中使用了条件,则返回满足条件的第一个元素,如果找不到任何满足条件的元素,则返回默认值。方法返回一个包含原始集合中所有元素的序列,如果原始集合为空,则返回包含一个默认值的序列。都是用于查询集合中的第一个元素,但它们的行为略有不同。方法总是返回一个包含一个元素的序列,而。方法只返回一个元素或默认值。类型的默认值为null。

python求解偏微分方程_Python数值计算----------求解简单的偏微分方程_weixin_39695374的博客-程序员秘密

很多物理现象的都可以用方程来描述,比如热传导与物质扩散可以用扩散方程来描述,流体的流动可以用NS方程描述等等。如果能够将这些偏微分方程求解出来,就可以来对很多物理现象进行仿真,现在工程中的仿真软件都是通过程序数值求解一类偏微分方程。今天我们尝试求解一类偏微分方程,为了简单起见,我们以一个简单的平流方程为例,方程形式如下:平流方程求解偏微分方程的数值解法非常多,这里也是采用一种较为直白的方法----...

com.xxx.common.service.xxxService‘ that could not be found.异常 @Autowire注入失败_coursebaseinfoservice' that could not be found._河马小胖子的博客-程序员秘密

问题:发现自己写的服务已经注入了spring(出现了绿色的标志);但是想在其它类用@Autowire 注入死活不进来解决办法:这种问题一般都是分模块时候的问题,注入spring没问题,但是拿出来有问题,这时候应该考虑你扫包时候有没有扫到注入spring的 模块所在的包springboot分模块项目中eg: 模块1 com.my.demo01模块2 com.my.demo02case1:com.my- xxxApplication01(启动类1).demo01com.my- xxxAp

Python爬虫代理池搭建_pengjunlee的博客-程序员秘密

目录一、为什么要搭建爬虫代理池二、搭建思路三、代码实现ipproxy.pysettings.pyproxy_queue.pyproxy_util.pyproxy_crawlers.pyrun.py四、代理测试一、为什么要搭建爬虫代理池在众多的网站防爬措施中,有一种是根据ip的访问频率进行限制,即在某一时间段内,当某个ip的访问次数达到一定的阀值时,该...

随便推点

网络编程---Syn_Flood攻击_m0_46598535的博客-程序员秘密

Syn_Flood概述Syn-Flood攻击是当前网络上最为常见的DDoS攻击,也是最为经典的拒绝服务攻击,它利用了TCP协议实现上的一个缺陷,通过向网络服务所在端口发送大量的伪造源地址的攻击报文,就可能造成目标服务器中的半开连接队列被占满,从而阻止其他合法用户进行访问。这种攻击早在1996年就被发现,但至今仍然显示出强大的生命力。很多操作系统,甚至防火墙、路由器都无法有效地防御这种攻击,而且由于它可以方便地伪造源地址,追查起来非常困难。它的数据包特征通常是,源发送了大量的SYN包,并且缺少三次握手的最

iOS---通知传值的使用_我的日子里的博客-程序员秘密

通知 是在跳转控制器之间常用的传值代理方式,除了代理模式,通知更方便、便捷.输入所要发送的信息 ,同时将label的值通过button方法调用传递,- (IBAction)buttonClick:(id)sender {    //添加 字典,将label的值通过key值设置传递    NSDictionary *dict =[[NSDictionary

原型图设计工具对比_weixin_33921089的博客-程序员秘密

原型图(或线框图)设计工具是创建网站和应用程序的利器,它让设计师和设计团队专注于原型产品的功能以及如何创建更好的用户体验。如今,市场上涌现了各类功能不一的原型工具。然而,从中挑选出一款最合适自己的也不是一件容易的事情。下面的软件对比分析将会对有此困惑的朋友有帮助。一直以来,原型设计领域的竞争激烈而且经历着飞...

石子归并 51Nod - 1021 (区间dp模版题)_GCR-的博客-程序员秘密

石子归并思路:看到样例,然后自己举了几个例子发现贪心好像也是可以做的,就是把相加代价最小的两堆石子优先合并,交上去之后wa了,始终不觉得是思路有问题,没几行的代码找了好久的bug,愣是觉得no problem;#include <bits/stdc++.h>using namespace std;int n, a[102];int Right(int x) { for(...

cocos2d-x解析ccb及绑定到lua_dujiadui的博客-程序员秘密

要点一:C++解析ccb主要是这几个文件CCBReader.h/cpp、CCNodeLoaderLibrary.cpp、CCNodeLoader.h/cpp等CCBReader文件中的CCBReader::readNodeGraph方法是读取ccbi的节点(该方法应该看懂),该方法做的事有1.读取该节点类型(自定义类型这里用到了)   /* Read class

Ubuntu运行startx后,登陆死循环问题_ubuntu系统上有正在运行的x登录会后_千千Sama的博客-程序员秘密

解决方案:step1.在登录界面按Ctrl+alt+F1,这样可以进入控制台,输入用户名和密码进入系统;step2.rm -rf .Xaut*step3.按Ctrl+alt+F7回到图形登陆界面,输入密码即可进入。对于Ubuntu系统来说,控制台可以是Ctrl+F1~F6都可以原理:startx执行后,在用户家目录下产生一个文件.Xauthority,有了这个文件后就会无限循...

推荐文章

热门文章

相关标签