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

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

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

运行结果:

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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5720749.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存