【python爬虫开发实战 情感分析】利用爬虫爬取城市评论并对其进行情感分析

🚀个人主页:为梦而生~ 关注我一起学习吧!
💡专栏
python网络爬虫从基础到实战 带你学习爬虫从基础到实战
深度学习带你感受AI的魅力
💡往期推荐
⭐️前面比较重要的基础内容
【Python爬虫开发基础⑫】requests库概述(文件上传、cookies处理、状态码处理、异常处理等)
【Python爬虫开发基础⑬】Scrapy库概述(简介、安装与基本使用)
【Python爬虫开发基础⑭】Scrapy架构(组件介绍、架构组成和工作原理)
⭐️爬虫的实战文章
【Python爬虫开发实战①】使用urllib以及XPath爬取可爱小猫图片
【Python爬虫开发实战②】使用urllib以及jsonpath爬取即将上映电影信息
⭐️机器学习基础文章:
【机器学习基础】正则化
【机器学习基础】决策树(Decision Tree)
【机器学习基础】K-Means聚类算法


文章目录

  • 一、目的
  • 二、方法
    • (1)爬取小红书:
    • (2)爬取携程:
    • (3)数据处理:
    • (4)词云生成
    • (5)情感分析
  • 三、数据分析结果
  • 四、结论
  • 五、代码


一、目的

本项目旨在通过爬取大量的评论数据,分析游客对潍坊和淄博的情感态度,从而为有意向去这两个城市旅游的人提供有价值的参考。通过对评论的情感分析,我们可以解游客对潍坊和淄博的整体评价以及他们在评论中表达的情感倾向。同时,我们还可以获取对这两个城市的客观评价、满意度水平和不满意之处的细节解。这些信息可以帮助旅游从业者、景点管理者和相关决策者更好地了解游客对潍坊和淄博旅游体验的感受,进一步改善景点的服务质量和提升游客的满意度。此外,这些评论数据的情感分析还可以为市场营销活动、旅游推广和舆情管理等方面的决策提供有价值的参考。


二、方法

(1)爬取小红书:

使用requests库来发送HTTP请求,并使用json和re库来处理JSON数据和正则表达式。搜索小红书上的笔记,并根据给定的关键词、数量和排序方式获取相应的笔记信息。

  1. 导入所需的库:jsonrerequestsOneNote类(从xhs_utils.xhs_util模块导入)以及get_headersget_search_dataget_paramsjscheck_cookies函数(从one模块导入)。
  2. 定义一个名为Search的类,该类包含以下方法:
  • __init__:初始化方法,用于设置cookies、搜索URL、请求头和参数。如果传入cookies参数,则使用传入的cookies,否则调用check_cookies()函数获取cookies
  • get_search_note:根据给定的关键词和数量,获取搜索结果中的笔记ID列表。该方法首先构造一个包含搜索数据的JSON字符串,然后使用正则表达式替换其中的关键词和页码。接着,通过循环不断发送请求,直到获取到足够数量的笔记ID或没有更多搜索结果为止。最后返回笔记ID列表。
  • handle_note_info:根据给定的关键词、数量、排序方式和其他参数,处理搜索结果中的笔记信息。该方法首先构造一个包含搜索数据的JSON字符串,然后使用正则表达式替换其中的关键词和页码。接着,通过循环不断发送请求,直到获取到足够数量的笔记信息或没有更多搜索结果为止。最后打印出搜索结果的数量。
  • main:主方法,用于接收用户输入的信息(关键词、数量和排序方式),并调用handle_note_info方法处理搜索结果。
  1. 在程序的主入口点,创建一个Search类的实例,并设置搜索的关键词、数量和排序方式。然后调用main方法开始搜索。

(2)爬取携程:

  1. 导入所需的库和模块:程序首先导入各种需要的库和模块,包括操作系统、时间、配置文件解析、HTTP请求、CSV文件处理、日志记录、JSON数据处理和文件操作等。
  2. 定义变量和常量:程序定义一些变量和常量,用于存储API接口地址、标志位、数据集合等。
  3. 定义函数:程序定义几个函数,用于获取城市编号、计算票价平均值、获取景点的票价信息等。
  4. 主程序执行流程:在主程序中,首先初始化日志记录器,然后读取配置文件中的参数。接下来,程序进入一个循环,循环爬取城市编号、景点列表数据、景点详情数据和票价数据。根据需要,程序还会爬取评论数据。最后,将爬取到的数据保存到文件中。

(3)数据处理:

将指定文件夹下的所有CSV文件合并成一个文件。主要运行流程如下:

  1. 导入pandas库和glob库。定义一个名为hebing的函数,用于合并CSV文件。在hebing函数中,使用glob库获取指定文件夹下的所有CSV文件,并打印出文件数量。
  2. 遍历所有CSV文件,对每个文件进行处理在处理过程中,首先创建一个空列表datalist,用于存储需要合并的数据行。
  3. 打开当前处理的CSV文件,逐行读取内容。如果当前行的索引是偶数且不为空行,则将该行添加到datalist中。
  4. datalist中的数据写入到合并后的总文件中,每个数据占一行。
  5. 在主程序中,调用hebing函数进行文件合并操作。

(4)词云生成

  1. 首先,定义一个名为word_segment的函数,该函数使用jieba库对输入的文本进行分词,并将分词结果以空格分隔的形式返回。
  2. 然后,定义一个名为generate_wordcloud的函数,该函数接受一个文本作为输入,并使用WordCloud库生成词云。词云的背景颜色设置为白色,最大显示词数为2000,背景图片为"淄博.png"以及"潍坊.png",停用词为STOPWORDS,字体路径为"msyh.ttf"
  3. 生成的词云图像保存到本地,并显示出来。

在这里插入图片描述

在这里插入图片描述
在主程序中,首先读取名为"zbcomments.csv"的文件内容,并将其存储在变量text中。然后,如果文本是中文文本,就调用chnSegment.word_segment函数对其进行分词处理。最后,调用plotWordcloud.generate_wordcloud函数生成词云。

(5)情感分析

  1. 首先使用SnowNLP对每一条评论进行评分:
    使用pandasread_csv函数将名为'source_files/wf.csv'的CSV文件加载到一个名为dfpandas数据框中。然后,初始化一个空列表sentiment_scores,用于存储情感分析的结果。
  2. 接着,使用一个for循环遍历数据框df的每一行,并对每一行的文本进行情感分析。使用SnowNLP类的实例化对象s对文本进行分析,并将情感得分添加到sentiment_scores列表中。在循环结束后,将情感得分列表添加到数据框df中,并创建一个新的列名为'sentiment_score'
  3. 最后,使用pandasto_csv函数将更新后的数据框保存到名为'score/data_with_sentiment_wf.csv'的新CSV文件中,同时设置index参数为False以避免在输出文件中包含索引列。

其次,对于打分进行标注,将情感值高于0.5的标注为积极,小于0.5为消极,等于0.5为中立。
基于三个情感态度,进行饼图的绘制。
最后,对于情感态度进行更深层次的分析,绘制相应的情感分布直方图。


三、数据分析结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


四、结论

本项目最终爬取潍坊市和淄博市几个热门景点的游客评论数据共计约5w条。分析实验结果可知,游客们对这几大热门景点的评价基本持积极肯定态度,持否定态度的游客群体相对较少。推测原因可能是选取的景点均为潍坊市、淄博市热门景点和地标性建筑,景区建设的投入较高,配套的服务设施也相对比较完善,因此得到了游客们普遍的积极反馈。
通过以上结果可以得出,大部分的游客对于潍坊和淄博的景点是觉得不错的,这表明潍坊和淄博在游客心中是一个不错的城市。


五、代码

利用爬虫爬取5万条城市评论并对其进行情感分析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/296702.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot+vue网上图书商城(程序+数据库+文档)

🍅点赞收藏关注 → 私信领取本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅摘 要 在Internet高速发展的今天…

STM32G030C8T6:USART串口通信(中断)

本专栏记录STM32开发各个功能的详细过程,方便自己后续查看,当然也供正在入门STM32单片机的兄弟们参考; 本小节的目标是,系统主频64 MHZ,采用高速外部晶振,通过芯片PB6,PB7 的USART1 口,实现串口通信。 原理…

沉浸式学习外语:在电视上播放世界名著中英双语对照音频

目前学习英语的app及软件层出不穷,但家长一是担心孩子长时间看手机或电脑,眼睛受不了,二是担心孩子一旦拿者手机或电脑没人看管,就会玩游戏。实际上还有一个更好的设备可用于学习,就是电视机。电视机屏幕大&#xff0c…

79 Python开发-sqlmapapiTamperPocsuite

目录 本课知识点本课目的:演示案例:Sqlmap_Tamper模块脚本编写绕过滤SqlmapAPI调用实现自动化SQL注入安全检测Pocsuite3漏扫框架二次开发POC/EXP引入使用 涉及资源: 本课知识点 Request爬虫技术,Sqlmap深入分析,Pocsuite分析,框架代码二次修…

伦茨科技Apple Find My认证芯片-ST17H6x芯片

深圳市伦茨科技有限公司(以下简称“伦茨科技”)发布ST17H6x Soc平台。成为继Nordic之后全球第二家取得Apple Find My「查找」认证的芯片厂家,该平台提供可通过Apple Find My认证的Apple查找(Find My)功能集成解决方案。…

数据结构 模拟实现LinkedList双向不循环链表

目录 一、双向不循环链表的概念 二、链表的接口 三、链表的方法实现 (1)display方法 (2)size方法 (3)contains方法 (4)addFirst方法 (5)addLast方法 …

C# OpenCvSharp DNN FreeYOLO 密集行人检测

目录 效果 模型信息 项目 代码 下载 C# OpenCvSharp DNN FreeYOLO 密集行人检测 效果 模型信息 Inputs ------------------------- name:input tensor:Float[1, 3, 192, 320] --------------------------------------------------------------- …

php-ffmpeg运用 合并视频,转码视频

下载 官网 windows 版本 添加环境变量 合并视频 public function test_that_true_is_true(): void{ini_set(memory_limit,-1); //没有内存限制set_time_limit(0);//不限制执行时间//ffmpeg配置$path [ffmpeg.binaries > D:\soft\ffmpeg\bin/ffmpeg.exe,ffprobe.binaries…

编程基础 - 初识Linux

编程基础 - 初识Linux 返回序言及专栏目录 文章目录 编程基础 - 初识Linux前言一、Linux发展简介二、现代Linux三、Linux系统各发行版小结 前言 为什么要学习Linux呢?我这Windows用得好好的,简单易用傻瓜式、用的人还超多!但是我要告诉你的…

回顾2023编程之旅

一、前言 看在给了我一个博客专家的份上就继续写写博客,实事求是的讲如果是工作之余去总结csdn写写技术博客,还想混个专家什么的,真的是精力不够。因为里面的灌水的实在太多,比不过的,写这个玩意必须得淡泊名利才能悠然…

《PCI Express体系结构导读》随记 —— 第I篇 第2章 PCI总线的桥与配置(7)

接前一篇文章:《PCI Express体系结构导读》随记 —— 第I篇 第2章 PCI总线的桥与配置(6) 2.2 HOST主桥 MPC8548处理器的拓扑结构如图2-2所示: OCeaN部件的拓扑结构如图2-3所示: 2.2.1 PCI设备配置空间的访问机制 为了…

轻松入门:Anaconda 在 PyCharm 中的配置与应用指南

1 Anaconda Anaconda 和 Conda 是两个相关但不同的概念。 Anaconda 是一个免费且开源的发行版,包含了 Python 和 R 语言的数据科学和机器学习相关的众多包,它包括 Conda、Python、Jupyter Notebook 等多个科学计算和数据科学中常用的应用。 Anaconda 通过…

30、共空间模式CSP与白化矩阵

CSP算法和PCA降维都涉及到了白化,那白化的目的和作用到底是啥呢? 矩阵白化目的: 对于任意一个矩阵X,对其求协方差,得到的协方差矩阵cov(X)并不一定是一个单位阵。 下面介绍几个线代矩阵的几个概念: 1、…

Oracle分区表

文章目录 A. varchar2类型时间字段(20240102)分区实战1. 表要不要分区2. 将已经存在的表改造为分区表(时间字段,varchar2类型)3. 增加分区3.1 增加分区3.2 置换分区,不会复制索引,不要用这种语法建表,这是专门为置换分区用的3.3 分…

【方法】PPT设置密码后如何修改?

PowerPoint是我们日常和工作中经常用到的办公软件,有时候为了保护文件,还会设置密码,那设置密码后又想要修改密码,怎么操作呢?下面来看看PPT常用的两种密码是如何修改的。 1. “打开密码” 想要修改PPT的“打开密码”…

【深度学习】cv领域中各种loss损失介绍

文章目录 前言一、均方误差二、交叉熵损失三、二元交叉熵损失四、Smooth L1 Loss五、IOU系列的loss 前言 损失函数是度量模型的预测输出与真实标签之间的差异或误差,在深度学习算法中起着重要作用。具体作用: 1、目标优化:损失函数是优化算法…

Modbus 通信协议 二

Modbus 常用缩写 通用Modbus帧结构 -应用数据单元(ADU) Modbus数据模型 Modbus ADU 和 PDU 的长度 Modbus PDU结构 串行链路上的 Modbus 帧结构 Modbus 地址规则 ASCLL 模式 和 RTU 模式的比较 RTU 模式 RTU 模式位序列 帧格式 帧的标识与鉴别 CRC 循环冗…

2023春季李宏毅机器学习笔记 02 :机器学习基本概念

资料 课程主页:https://speech.ee.ntu.edu.tw/~hylee/ml/2023-spring.phpGithub:https://github.com/Fafa-DL/Lhy_Machine_LearningB站课程:https://space.bilibili.com/253734135/channel/collectiondetail?sid2014800 一、機器學習基本原理…

【Pytorch】学习记录分享10——TextCNN用于文本分类处理

【Pytorch】学习记录分享10——PyTorchTextCNN用于文本分类处理 1. TextCNN用于文本分类2. 代码实现 1. TextCNN用于文本分类 具体流程: 2. 代码实现 # coding: UTF-8 import torch import torch.nn as nn import torch.nn.functional as F import numpy as np…

canal本地搭建以及运行

具体的文档可参考官网文档:https://github.com/alibaba/canal/wiki canal [kənl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 工作原理 canal 模拟 MySQL slave 的交互协议&#x…