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

下面我将详细讲解如何用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日

相关文章

  • Pytest断言的具体使用

    Pytest断言的具体使用 在Python中,Pytest是一个流行的测试框架,它提供了丰富的断言方法来验证代码的正确性。本文将介绍Pytest断言的具体使用,包括常用的断言方法和示例说明。 安装Pytest 在使用Pytest之前,我们需要先安装Pytest。可以使用pip命令在命令行安装Pytest: pip install pytest 常用的Pyte…

    python 2023年5月14日
    00
  • Python 使用pip在windows命令行中安装HDF reader包的操作方法

    下面我来详细讲解“Python 使用pip在windows命令行中安装HDF reader包的操作方法”: 1. 查看安装环境版本 首先需要确认已经安装了Python环境,并且已经安装了pip包管理工具。可以在命令行窗口输入以下命令查看Python的版本和pip的版本: python –version pip –version 如果输出结果分别对应了Py…

    python 2023年5月14日
    00
  • django使用xlwt导出excel文件实例代码

    以下是详细讲解“django使用xlwt导出excel文件实例代码”的完整实例教程。 1. 环境准备 在使用django导出excel文件之前,需要安装xlwt库,可以通过以下命令进行安装: pip install xlwt 2. 创建视图函数 在django项目的某个应用中创建导出excel文件的视图函数,例如以下代码: import xlwt from …

    python 2023年5月13日
    00
  • Python版微信红包分配算法

    Python版微信红包分配算法详细讲解 微信的红包功能在社交圈中越来越流行,其中向多个人发送等额红包的功能更是常用。本文将详细讲解Python版本的微信红包分配算法。 前置知识 总金额:红包的总金额,单位是分。比如100元的红包总金额是10000分。 红包个数:要分给多少人,即红包的个数。比如分给10个人,红包个数就是10。 每个红包的最低值:每个红包的最小…

    python 2023年6月5日
    00
  • Python真题案例之二分法查找详解

    Python真题案例之二分法查找详解 在进行数据查询的过程中,如果数据量非常庞大,普通的线性查找算法效率会很低,因此需要使用其他更高效的算法。其中一种被广泛应用的算法就是二分法查找。在这篇文章中,我们将会详细讲解二分法查找的过程,并通过示例来说明其使用方法。 一、什么是二分法查找? 二分法查找,也叫折半查找,是一种针对排过序的数组的查找算法。它将已排序的数组…

    python 2023年6月3日
    00
  • python向json中追加数据的两种方法总结

    关于“python向json中追加数据的两种方法总结”的完整攻略,我会从以下几个方面进行讲解: 什么是JSON? Python中处理JSON的常用方法 Python向JSON中追加数据的两种方法 示例说明 1. 什么是JSON? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,具有良好的可读性和便于机器解析。JSO…

    python 2023年6月3日
    00
  • Python基础详解之邮件处理

    Python基础详解之邮件处理 简介 本篇文章主要介绍如何使用Python处理邮件,包括邮件的发送和接收,以及邮件的解析和处理。为了更好地理解,我们将分别从三个方面来阐述: 发送邮件 接收邮件 解析和处理邮件 发送邮件 发送邮件是指通过Python向收件人发送邮件的过程。Python中有多种发送邮件的方式,此处我们介绍使用smtplib库实现发送邮件。 示例…

    python 2023年6月5日
    00
  • python目标检测SSD算法预测部分源码详解

    下面是详细讲解“python目标检测SSD算法预测部分源码详解”的完整攻略,包含两个示例说明。 python目标检测SSD算法预测部分源码详解 SSD(Single Shot MultiBox Detector是一种目标检测算法,它可以在一张图像中同时检测多个目标。在SSD算法中,预测部分非常重要的一部分,它可以根据输入图像预测出目标的位置和类别。下面是SS…

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