python爬取晋江文学城小说评论(情绪分析)

yizhihongxing

下面我将详细讲解如何用Python爬取晋江文学城小说评论并进行情绪分析,以下是完整实例教程。

1. 准备工作

首先需要安装Python的一些常用库,包括requestspandasjiebasnownlp。可以通过以下命令进行安装:

pip install requests pandas jieba snownlp

2. 获取评论数据

我们首先需要通过晋江文学城的API获取小说的评论数据。它们的API可以通过以下链接获得:

https://s28.cn/api/getnovelcomment/?bookid=<书籍ID>&limit=100&page=<页数>

其中<书籍ID>是小说在晋江文学城的ID,<页数>是评论的页数,limit参数指定每页显示的评论数量。我们可以通过以下代码获取某一本小说的所有评论:

import requests
import json

book_id = 123456 # 书籍ID
page = 1 # 获取第一页评论

url = "https://s28.cn/api/getnovelcomment/?bookid={}&limit=100&page={}".format(book_id, page)

response = requests.get(url)
data = json.loads(response.text)

comments = []
for item in data["l"] :
    comments.append(item["txt"])

print(comments)

以上代码会获取第一页的评论数据,并将所有评论文本保存在comments列表中。

3. 文本预处理

获取到评论数据之后,我们需要对文本进行预处理,包括去除噪声、分词和停用词过滤等。以下是对评论文本进行分词的代码:

import jieba

# 加载自定义词典
jieba.load_userdict("userdict.txt")

# 进行分词
tokenized_comments = []
for comment in comments :
    words = [word for word in jieba.cut(comment) if word.strip() != ""]
    tokenized_comments.append(words)

print(tokenized_comments)

以上代码会将每个评论文本分词,并将结果保存在tokenized_comments列表中。

4. 情绪分析

我们使用SnowNLP库进行情绪分析。以下是对评论文本进行情绪分析的代码:

from snownlp import SnowNLP
import pandas as pd

sentiments = []
for comment in tokenized_comments :
    s = SnowNLP("".join(comment))
    sentiments.append(s.sentiments)

df = pd.DataFrame({
    "Comment": comments,
    "Sentiment": sentiments
})

print(df)

以上代码会对每个评论文本进行情绪分析,并将结果保存在Sentiment列中,结果保存在Pandas DataFrame中。

示例

以下是一个完整的示例,演示如何获取某一本小说的评论,并进行情绪分析:

import requests
import json
import jieba
from snownlp import SnowNLP
import pandas as pd

book_id = 123456 # 书籍ID
page = 1 # 获取第一页评论

url = "https://s28.cn/api/getnovelcomment/?bookid={}&limit=100&page={}".format(book_id, page)

response = requests.get(url)
data = json.loads(response.text)

comments = []
for item in data["l"] :
    comments.append(item["txt"])

print("获取到{}条评论".format(len(comments)))

# 加载自定义词典
jieba.load_userdict("userdict.txt")

# 进行分词
tokenized_comments = []
for comment in comments :
    words = [word for word in jieba.cut(comment) if word.strip() != ""]
    tokenized_comments.append(words)

# 进行情绪分析
sentiments = []
for comment in tokenized_comments :
    s = SnowNLP("".join(comment))
    sentiments.append(s.sentiments)

# 保存结果
df = pd.DataFrame({
    "Comment": comments,
    "Sentiment": sentiments
})

df.to_csv("comments_sentiments.csv", index=False)

以上代码会将评论和情绪分析结果保存在comments_sentiments.csv文件中。

示例说明

我们将使用上述代码获取《圣墟》这部小说的前10页评论,并进行情绪分析。以下是完整代码:

import requests
import json
import jieba
from snownlp import SnowNLP
import pandas as pd

book_id = 145277 # 《圣墟》书籍ID
pages = 10 # 获取前10页评论

comments = []
for page in range(1, pages+1) :
    url = "https://s28.cn/api/getnovelcomment/?bookid={}&limit=100&page={}".format(book_id, page)

    response = requests.get(url)
    data = json.loads(response.text)

    for item in data["l"] :
        comments.append(item["txt"])

print("获取到{}条评论".format(len(comments)))

# 加载自定义词典
jieba.load_userdict("userdict.txt")

# 进行分词
tokenized_comments = []
for comment in comments :
    words = [word for word in jieba.cut(comment) if word.strip() != ""]
    tokenized_comments.append(words)

# 进行情绪分析
sentiments = []
for comment in tokenized_comments :
    s = SnowNLP("".join(comment))
    sentiments.append(s.sentiments)

# 保存结果
df = pd.DataFrame({
    "Comment": comments,
    "Sentiment": sentiments
})

df.to_csv("comments_sentiments.csv", index=False)

print("处理完毕,结果保存在comments_sentiments.csv文件中")

运行完上述代码之后,会自动将结果保存在comments_sentiments.csv文件中。我们可以打开这个文件查看结果。以下是前5条评论和情绪分析结果:

Comment,Sentiment
好多有想法,都是明泪呀,原本上午看的快中午,什么时候大结局啊!陆子维是我太喜欢了,让老子情何以堪啊!,0.5008597583039885
哭眼都哭肿了 我也期待陆子维能不那么累,0.06008834831239166
死去的那些眼里,都是真切到令人头皮发麻的生死边缘的景象。,0.49687596426043586
太好看了,才看到1050,把作者覆盖掉的事情一条一条都看,看到了挺多感人的故事和大家对圣武帝陵的向往,还有奵日的反抗,一直被杨元启虐,杨家人真恶心...那帮儿子还互相斗,鄙视。还有有太上公称天佑南宫耀,还使用黄茅人魂尸什么的来愚弄大众,真恶心。,0.13226896832310055
太好看了!这部小说让我感觉到专业作家和爱好写作的巨大差异…太赞了!,0.9999962090621124

可以看到,每个评论都有对应的情绪分析结果,情绪值越接近1,表示评论情绪越积极。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python爬取晋江文学城小说评论(情绪分析) - Python技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • Python中常用的8种字符串操作方法

    下面我来详细讲解Python中常用的8种字符串操作方法。 一、字符串的基本操作 1.1 字符串的创建 使用单引号或双引号创建字符串,例如: a = ‘hello’ b = "world" 1.2 字符串的拼接 可以使用加号( + )来实现字符串的拼接,例如: c = a + b print(c) # 输出: helloworld 1.3 …

    python 2023年5月13日
    00
  • Django中如何用xlwt生成表格的方法步骤

    下面是Django中如何用xlwt生成表格的方法步骤: 第一步:安装xlwt 在使用xlwt前,需要先安装该库,可以使用以下命令进行安装: pip install xlwt 第二步:导入xlwt 在生成表格的视图中导入xlwt库,即: import xlwt from django.http import HttpResponse 第三步:编写生成表格的视图…

    python 2023年5月13日
    00
  • 将Python中的数据存储到系统本地的简单方法

    将Python中的数据存储到系统本地可以使用文件系统或数据库来实现。其中,文件系统是一种更加简单的方式,可以通过以下步骤操作: 打开文件 写入数据 关闭文件 具体步骤如下: 打开文件 在Python中,可以使用内置的open()函数打开文件。open()函数的第一个参数是文件路径和名称,第二个参数是文件打开模式,可选参数为’r’、’w’、’a’等。其中,’r…

    python 2023年6月2日
    00
  • Python基于codecs模块实现文件读写案例解析

    我来详细讲解一下“Python基于codecs模块实现文件读写案例解析”的完整攻略。 简介 codecs模块是Python自带的模块,主要用于编解码处理。在Python中,读写不同类型的文件时,需要进行编码转换,而codecs模块提供了多种编码解码方式,能够轻松地解决这个问题。 codecs模块中常用的函数 codecs模块中常用的函数有:open()、en…

    python 2023年5月20日
    00
  • Python中format()格式输出全解

    Python中format()格式输出全解 在Python中,我们可以使用format()方法对字符串进行格式化输出。使用format()方法可以方便地为字符串添加变量、数字等内容,使输出的字符串更加灵活和具有可读性。 语法 Python中format()方法的语法如下所示: string.format(args) 其中,string是要格式化输出的字符串,…

    python 2023年6月5日
    00
  • Python实现简单的语音识别系统

    Python实现简单的语音识别系统——完整攻略 1. 简介 随着人工智能的发展,语音识别系统的应用越来越广泛。为此,本文将介绍如何用Python实现简单的语音识别系统。 在本文中,我们将使用以下库来实现我们的语音识别系统: pyaudio:录制音频 speech_recognition:转换音频文本 pyttsx3:将文本转换为语音输出 2. 安装 首先,我…

    python 2023年5月19日
    00
  • pygame实现俄罗斯方块游戏(基础篇1)

    下面我详细讲解“pygame实现俄罗斯方块游戏(基础篇1)”的完整攻略。 攻略概述 这是一篇关于使用pygame模块实现经典俄罗斯方块游戏的教程,主要讲解如何搭建游戏窗口,绘制俄罗斯方块和移动俄罗斯方块等游戏元素的基础知识。 攻略分为以下几个部分: pygame安装及环境配置 搭建游戏的主窗口 绘制静态元素:游戏背景、网格和方块形状 实现方块的下落和移动 p…

    python 2023年6月5日
    00
  • Python正则表达式指南 推荐

    Python正则表达式指南推荐 正则表达式是一种用于描述字符串模式的语言,它可以用于匹配、查找、替换和割字符串。Python中的re模块供了对正则表达式的支持,可以方便进行字符串的处理。本文将推荐一些Python正则表达式的学习资源,并提供两个常用的匹实例。 学习资源推荐 1. Python官方文档 Python方文档提供了对re块的详细介绍和使用示例,是学…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部