爬虫(一):东方财富股吧评论

**

爬虫(一):用Python获取东方财富股吧评论

**
第一次尝试爬虫,因为需要选择了东方财富股吧,需要的小伙伴可以一起来学习,首先声明一下,本人也是从b站学来了,第一次就是照葫芦画瓢,有样学样获取的。首先附一下视频连接吧,有需要的可以去看详细内容哦~时间也不是很长
https://www.bilibili.com/video/BV1oz4y1Z7pt?from=search&seid=12230486286090734478

需要用到的库有:etree,requests,pandas
requests:获取网页的
etree中的lxml:解析网页文档的
pandas:保存文档

所以呢,需要用到的小伙伴需要先将前两个库下载下来~

接下来就是敲代码了

代码上该有的注释都有了,这里我就不赘述了,想知道获取的详情可以看视频,他讲得很详细呢~

'''第一步:导入相关库'''
from lxml import etree     #解析文档
import requests            #获取网页
import pandas as pd        #保存文件
'''
需要保存的内容:
从股吧网页页面来看,有阅读量、评论量、标题、作者和时间
'''
max_page = int(input("请输入最大获取页面:"))  #最大爬取页面
all_reards = [
  • 14
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
第三方库: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),是因为某一日投资者的评论越多,代表市场投资者情绪的波动越大。
要使用Python爬虫获取东方财富评论,你可以按照以下步骤进行操作: 1. 首先,导入必要的库,如requests、beautifulsoup和pandas。 2. 设置请求头文件,以模拟浏览器发送请求。 3. 使用requests库发送GET请求,获取网页源代码。 4. 使用beautifulsoup库解析网页源代码,提取评论的相关信息,如标题、作者、更新时间等。 5. 将提取的信息保存到一个列表中。 6. 通过循环遍历每一页的评论,重复步骤3-5,直到获取所有评论。 7. 使用pandas库将评论数据存储到Excel文件中。 参考以下代码示例: ```python import requests from bs4 import BeautifulSoup import pandas as pd headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} def get_comments(max_page): all_comments = [] for page in range(1, max_page+1): print('Crawling page {}'.format(page)) url = 'http://guba.eastmoney.com/list,zssz399006,f_{}.html'.format(page) response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, 'html.parser') posts = soup.find_all('div', class_='articleh normal_post') for post in posts: title = post.find('span', class_='l3 a3').a.text author = post.find('span', class_='l4 a4').a.text time = post.find('span', class_='l5 a5').text comment = { 'title': title, 'author': author, 'time': time } all_comments.append(comment) return all_comments max_page = 10 # 设置要爬取的最大页数 comments = get_comments(max_page) data = pd.DataFrame(comments) data.to_excel('comments.xlsx', index=False) ``` 这段代码将会爬取指定页数的评论,并将结果保存到名为"comments.xlsx"的Excel文件中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值