欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Python学习笔记(10)——舆情数据评分系统搭建

时间:2023-08-27
python学习笔记(10)——舆情数据评分系统搭建

网络舆情是以网络为载体,以事件为核心,是广大网民情感、态度、意见、观点的表达,传播与互动,以及后续影响力的集合。 带有广大网民的主观性,未经媒体验证和包装,直接通过多种形式发布于互联网上。(来自网络百科)


对于进一步筛选新闻,爬取更有用的信息,【舆情数据评分系统】是一个有用的工具

文章目录

python学习笔记(10)——舆情数据评分系统搭建一、舆情数据评分系统1.0——根据标题评分二、舆情数据评分系统2.0——根据正文评分三、舆情数据评分系统3.0——解决乱码以及处理非相关信息


一、舆情数据评分系统1.0——根据标题评分

代码练习:

import requests#引用requests库import re#引用re库headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'}#自定义baidu()函数def baidu(company): url='https://www.baidu.com/s?rtt=1&bsst=1&cl=2&tn=news&ie=utf-8&word='+company res=requests.get(url,headers=headers).text p_source = '新闻来源:(.*?)"' p_date = '发布于:(.*?)"' p_href = '

p_title = '标题:(.*?)"' source=re.findall(p_source, res, re.S) date=re.findall(p_date, res, re.S) href=re.findall(p_href, res, re.S) title=re.findall(p_title, res, re.S)#舆情数据评分系统——根据标题 score = []#定义一个空列表 keywords = ['违约', '诉讼', '兑付', '阿里', '百度', '腾讯', '京东', '互联网']#设置关键词清单 for i in range(len(title)):#遍历标题 num = 0#设定初始分为0 for k in keywords:#循环判断计算新闻评分 if k in title[i]: num -= 5#出现一个关键词扣5分 score.append(num)#评分写入列表#数据评分打印 for i in range(len(title)): print(str(i + 1) + '.' + title[i] + '(' + date[i] + '-' + source[i] + ')') print(href[i]) print(company+'该条舆情评分为'+str(score[i]))#由于评分为数据,要转换为字符串再拼接companys = ['阿里巴巴', '万科集团', '京东','百度','腾讯']for i in companys: try:#try/except异常处理语句避免程序异常中断 baidu(i) print(i + '百度新闻爬取成功'+'n'+'n') except: print(i+'百度新闻爬取失败'+'n'+'n')

运行结果:

二、舆情数据评分系统2.0——根据正文评分

代码练习:

import requests#引用requests库import re#引用re库headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'}#自定义baidu()函数def baidu(company): url='https://www.baidu.com/s?rtt=1&bsst=1&cl=2&tn=news&ie=utf-8&word='+company res=requests.get(url,headers=headers).text p_source = '新闻来源:(.*?)"' p_date = '发布于:(.*?)"' p_href = '

p_title = '标题:(.*?)"' source=re.findall(p_source, res, re.S) date=re.findall(p_date, res, re.S) href=re.findall(p_href, res, re.S) title=re.findall(p_title, res, re.S)#舆情数据评分系统——根据标题 score = []#定义一个空列表 keywords = ['违约', '诉讼', '兑付', '阿里', '百度', '腾讯', '京东', '互联网']#设置关键词清单 for i in range(len(title)):#遍历标题 num = 0#设定初始分为0 #爬取正文 try: article=requests.get(href[i],headers=headers,timeout=10).text except: article='单个新闻爬取失败' #根据正文和标题进行评分 for k in keywords:#循环判断计算新闻评分 if (k in title[i])or(k in article): num -= 5 score.append(num)#评分写入列表#数据评分打印 for i in range(len(title)): print(str(i + 1) + '.' + title[i] + '(' + date[i] + '-' + source[i] + ')') print(href[i]) print(company+'该条舆情评分为'+str(score[i]))#由于评分为数据,要转换为字符串再拼接companys = ['阿里巴巴', '万科集团', '京东','百度','腾讯']for i in companys: try:#try/except异常处理语句避免程序异常中断 baidu(i) print(i + '百度新闻爬取成功'+'n'+'n') except: print(i+'百度新闻爬取失败'+'n'+'n')

运行结果:

三、舆情数据评分系统3.0——解决乱码以及处理非相关信息

代码练习:

import requests#引用requests库import re#引用re库headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'}#自定义baidu()函数def baidu(company): url='https://www.baidu.com/s?rtt=1&bsst=1&cl=2&tn=news&ie=utf-8&word='+company res=requests.get(url,headers=headers).text p_source = '新闻来源:(.*?)"' p_date = '发布于:(.*?)"' p_href = '

p_title = '标题:(.*?)"' source=re.findall(p_source, res, re.S) date=re.findall(p_date, res, re.S) href=re.findall(p_href, res, re.S) title=re.findall(p_title, res, re.S)#舆情数据评分系统——根据标题 score = []#定义一个空列表 keywords = ['违约', '诉讼', '兑付', '阿里', '百度', '腾讯', '京东', '互联网']#设置关键词清单 for i in range(len(title)):#遍历标题 num = 0#设定初始分为0 #爬取正文 try: article=requests.get(href[i],headers=headers,timeout=10).text except: article='单个新闻爬取失败' #乱码问题解决代码 try: article=article.encode('ISO-8859-1').decode('utf-8')#首先尝试用ISO-8859-1编码,utf-8解码 except: try: article=article.encode('ISO-8859-1').decode('gbk')#再尝试用ISO-8859-1编码,gbk解码 except: article=article#如上述方法失败则输出源码 #处理非相关信息,如热门新闻等插播的与正文无关的内容 p_article='

(.*?)

'#进一步清理数据,由于非相关内容是和包围,所以选择间内容可以避免干扰 article_main=re.findall(p_article,article)#获取正文内容 article=''.join(article_main)#将列表转换为字符串 #根据正文和标题进行评分 for k in keywords:#循环判断计算新闻评分 if (k in title[i])or(k in article): num -= 5 score.append(num)#评分写入列表#数据评分打印 for i in range(len(title)): print(str(i + 1) + '.' + title[i] + '(' + date[i] + '-' + source[i] + ')') print(href[i]) print(company+'该条舆情评分为'+str(score[i]))#由于评分为数据,要转换为字符串再拼接companys = ['阿里巴巴', '万科集团', '京东','百度','腾讯']for i in companys: try:#try/except异常处理语句避免程序异常中断 baidu(i) print(i + '百度新闻爬取成功'+'n'+'n') except: print(i+'百度新闻爬取失败'+'n'+'n')


免责声明:代码练习相关内容和方法参考《python金融大数据挖掘与分析》,如文中有侵权内容,请联系作者删除

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。