利用python爬取东方财富网股吧评论并进行情感分析(一)

本文介绍了使用Python爬取东方财富网股吧评论的过程,包括分析网页源代码,识别数据标签,以及获取每个股吧页面的评论并保存到Excel。尽管遇到标题内容不全的问题,但通过详细页爬取得到了完整数据。作者是一名金融专业的研究生,学习爬虫进行项目研究,后续计划进行情感分析。
摘要由CSDN通过智能技术生成

利用python爬取东方财富网股吧评论(一)

python-东方财富网贴吧文本数据爬取

分享一下写论文时爬数据用到的代码,有什么问题或者改善的建议的话小伙伴们一起评论区讨论。涉及内容在前人的研究基础之上,探索适合自己一些知识点,本人非计算机专业,金融专业,学习爬虫用于项目研究,以此发表供大家学习与指点。

一、论文说明

论文需求:股吧中人们发表的评论和创业板股市价格波动
数据来源:东方财富网创业板股吧
数据标签:阅读、评论、标题、作者、更新时间,
实现功能:读取每个股吧的全部页面的评论并写入excel表中

二、实施过程

1.明确评论数据

我们需要爬取的是东方财富吧中全部发帖信息的阅读、评论、标题、作者及最后更新时间这五个字段的数据,我一开始想也不是很难,解析一下网页匹配一下对应的标签值就可以了,但后面还是出现了各种各样的问题,需要大家留意。

2.查看网页源代码结构
① 网页源代码
首先打开网页的开发者工具(右击-检查)或者右击网页源代码,在源代码中查找对应字段的标签。
以下是大多数学者的分析:

  • 31
    点赞
  • 181
    收藏
    觉得还不错? 一键收藏
  • 51
    评论
第三方库:snownlp、tushare、pandas、numpy、matplotlib getData:从东方财富旗下的吧论坛爬取数据 SQL:用到的数据库操作函数 quantilizeSentiment:量化情绪指数,生成excel文件便于后面进行情绪指数和票价格涨幅相关度的量化分析(票价格历史数据来自tusharepro站,可以免费获取) result:传入某只票代码,返回情绪指数结果(主要关注此文件即可,其他爬虫分析之类的我后面放到云上,爬取的数据都放入云数据库中) analyze:进行情绪指数和票价格涨幅相关度分析、数据可视化 爬取后的数据存储在云端数据库中: db = pymysql.connect(host="116.62.46.214",user="dfcf",password="iJHPFZnRjXacNi6p",db="dfcf",port=3306) 接口说明(重点!!!): 函数: def data(share_code):#计算情绪指数 传参:share_code 票代码(例如:zssh000001)上证指数 返回参数:result 情绪指数 例如: if __name__ == '__main__': result=data('zssh000001') #传入票代码参数 print(result) #打印情绪指数结果 实现功能:根据传入的票代码到东方财富旗下的吧对应的某票分论坛爬取当天的用户评论信息,并将爬取的数据存储到MySQL中,之后再将数据进行统计并计算出该票当天的市场情感趋势。 执行流程 1、输入票代码 2、清空数据库上一天的评论信息 3、使用爬虫爬取当天东方财富网股吧论坛中该票的评论信息并进行数据清洗过滤,筛选出有效信息,存入MySQL数据库 4、使用金融情感计算模型进行文本数据分析 5、得出该票当日的情绪指数 6、返回情绪指数值 计算情绪指数具体算法实现 借助自然语言处理中的情感分类技术。按照正常的处理流程,需要搭建模型、准备语料库、训练模型、测试模型然后得到一个情感分类的模型。但这里,时间有限,所以直接使用现有的模型。snownlp是一个中文的开源的自然语言处理的Python库,可以进行分词、情感分类等。在本项目中可以直接使用它来量化出某一日市场投资者的整体情绪。量化的方法有许多种,可以将某一日所有的评论情绪得分得分相加再求评价,也可以求某一日情绪得分大于0.5的评论所占的比例。 项目所采用的方法: 将情绪得分>0.6的评论当作积极评论,小于0.4的评论当作消极评论。 设置变量neg和pos,存储某一日市场的积极情绪因子和消极情绪因子。关于neg和pos的计算方法,以neg为例: 初始化为0,若某一日的某一评论comment的情绪得分<0.4 neg=neg+1+log(该条评论的点赞数+该条评论作者的粉丝数+1,2),其中log(x,2)表示以2为低的x的对数。考虑该条评论的点赞数和该条评论作者的粉丝数是因为考虑到不同的评论的质量不同。取对数是为了让数据更加平滑,防止极值过大。+1是为了防止该条评论的点赞数和该条评论作者的粉丝数都为0。 计算某一日市场的总体情绪得分score。设计的模型是: score=log((pos/(pos+neg+0.0001)-0.5)*(该日评论总数+1)) (pos/(pos+neg+0.0001)-0.5)的意思是计算市场的情绪倾向,**大于0表明市场积极情绪情绪较强,越接近0.5越强。小于0反之。**后面的(该日评论总数+1),是因为某一日投资者的评论越多,代表市场投资者情绪的波动越大。
评论 51
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值