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

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')

运行结果:
Python学习笔记(10)——舆情数据评分系统搭建_第1张图片

二、舆情数据评分系统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')

运行结果:
Python学习笔记(10)——舆情数据评分系统搭建_第2张图片

三、舆情数据评分系统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金融大数据挖掘与分析》,如文中有侵权内容,请联系作者删除

    你可能感兴趣的:(python,chrome,开发语言)