贴吧评论敏感词识别及情感分析初级实现之评论获取

分三个模块实现贴吧评论敏感词识别及情感分析研究:“评论爬虫抓取”、“评论敏感词识别”、“评论情感分析(积极或消极)”。数据存储于MongoDB中,现设数据库“spiders”,数据集合users。其余两个模块见本人博文。
在贴吧评论敏感词识别及情感分析初级实现里,只涉及最基础的知识,未进行代码的升级以及相应模块的技术完善。

评论爬虫抓取

数据获取实现

因受限于语料库(“网上购酒体验评论”),现只爬取与语料库相关内容的帖子,如https://tieba.baidu.com/p/6105007639。该模块旨在通过贴吧URL,爬虫抓取全部页面中网民的头像、网名、发表言论以及发表时间。该模块通过分析网页URL,采用递进方式对贴吧特定主题“网上商城购酒体验”(https://tieba.baidu.com/p/6105007639)进行抓取,如:
网页1:https://tieba.baidu.com/p/6105007639?pn=1,
网页2:https://tieba.baidu.com/p/6105007639?pn=2,…
网页n:https://tieba.baidu.com/p/6105007639?pn=n
因此首先获取主题总页数,然后构建该主题下存在的所有网页URL 并对其进行数据抓取。
评论爬虫抓取的数据流图如下所示:

抓取的数据只存储于users集合中,且users集合的组成为:users(username,image,page,time)。
(1)利用网页节点属性获取帖子中的总页数。

    from pyquery import PyQuery as pq#获取总页数def gettotalpage(url):url=url+str(1)doc=pq(url=url)temp = []for item in doc('.l_reply_num .red').items():temp.append(item.text())return(int(temp[1]))

(2)请求路径获得网页源码。

import requests
def get_one_page(url):try:headers={'User_Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 ''(KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}response=requests.get(url,headers=headers)if response.status_code==200:return response.textreturn Noneexcept RequestException:return None

(3)利用正则表达式,提取信息

import re
def parse_one_page(html):pattern=re.compile('<img\susername.*?src=.*?https(''.*?)"/>.*?<li\sclass="d_name".*?<a''.*?target="_blank">(.*?)</a>.*?''<div.*?class="d_post_content''\sj_d_post_content.*?">(.*?)</div>.*?''<div\sclass="post-tail-wrap".*?<span''\sclass="tail-info''">.*?楼</span>.*?<span\sclass''="tail-info">(.*?)''</span>.*?</div>',re.S)items=re.findall(pattern,html)for item in items:temp1 = re.sub('<.*>', '', item[1].strip())temp2 = re.sub('<.*>', '', item[2].strip())yield {'username':temp1,'img':str('https')+item[0],'page':temp2,'time':item[3]}

(4)将信息存储于users数据集合中。

from pymongo import MongoClient
'''连接mongodb中的spiders库中的users集合'''
client=MongoClient()
db=client['spiders']
collection1=db['users']
def save_to_mongo(result):#此时result为字典集if collection1.insert_many(result):print('save successful')

(5)根据总页数,爬取该帖子所有网页的用户评论信息。

#抓取所有评论页面,规定不超过十页
def panduan(url,offset):url=url+str(offset)if requests.get(url).status_code==200:html = get_one_page(url)save_to_mongo(parse_one_page(html))#for item in parse_one_page(html):#write_to_file(item)
#抓取所有信息
def total_scrapy(url):url=url+str('?pn=')for i in range(1,gettotalpage(url=url)+1):panduan(url,i)

爬虫抓取缺陷

(1)帖子中的回复评论数据属于Ajax异步加载,没有实现Ajax分析爬取,因此数据不能获取。
(2)不能进行分布式爬取,未使用框架(spiders、scrapy),所用为“三段式”。

参考来源

(1)崔庆才.python3网络爬虫开发实战[M].北京:人民邮电出版社,2018

贴吧评论敏感词识别及情感分析初级实现之评论获取相关推荐

  1. 恶俗评论敏感词过滤 (可直接拿去用,动态热更新)

    恶俗评论敏感词过滤,可直接拿去用,动态热更新 过滤算法 敏感词库加载及初始化 敏感词库的动态热更新 bean配置 yml配置 依赖 过滤算法 主要是实现一个前缀树的数据结构,项目启动时读取敏感词库并进 ...

  2. 基于布隆过滤器实现敏感词识别和过滤

    在当前的网络环境下,敏感词过滤已经是各大网站的"标准配置",如果不想被大量的垃圾信息充斥,除了使用机器人识别.验证码等验证工具,还需要阻止含有敏感词内容的发布,否则可能面临关站等风 ...

  3. Python之手把手教你用JS逆向爬取网易云40万+评论并用stylecloud炫酷词云进行情感分析

    本文借鉴了@平胸小仙女的知乎回复 https://www.zhihu.com/question/36081767 写在前面: 文章有点长,操作有点复杂,需要代码的直接去文末即可.想要学习的需要有点耐心 ...

  4. 实例:爬取豆瓣评论、绘制词云图以及情感分析——以《长津湖》为例

    一.爬取豆瓣<长津湖>网页评论 (由于存在一定的反爬机制,以下代码最多只能爬取210条评论) # 导入工具包 import requests from bs4 import Beautif ...

  5. 自然语言处理-应用场景-文本分类:基于LSTM模型的情感分析【IMDB电影评论数据集】--(重点技术:自定义分词、文本序列化、输入数据批次化、词向量迁移使用)

    文本情感分类 1. 案例介绍 现在我们有一个经典的数据集IMDB数据集,地址:http://ai.stanford.edu/~amaas/data/sentiment/,这是一份包含了5万条流行电影的 ...

  6. 文本挖掘(四万字总结篇:爬虫 - 文本预处理 - 高频词统计 - 聚类 - 情感分析)

    1 爬虫 1.1 爬虫原理 这部分内容可以跳过,掌握与否对后面内容的阅读影响并不大,但有兴趣的话可以看看呐~   实现一个爬虫,一般需要经过两个步骤:处理请求和解析源码/数据.   处理请求方面,我们 ...

  7. 【数据分析大作业 爬虫+数据清洗+可视化分析】Python抓取视频评论并生成词云、情感指数柱状图、性别比例饼图及评论信息表格

    目录 一些将BV号转化为AV号的变量设置 词云屏蔽词设置 使用代理IP(直接从IP网站复制的) 爬虫的函数 将结果写入表格中 下面是主函数,首先看看能不能抓取到,还有一些变量设置 开始循环爬评论 对一 ...

  8. 豆瓣电视剧评论的爬取以及进行情感分析+生成词云

    很多时候我们要了解一部电视剧或电影的好坏时都会去豆瓣上查看评分和评论,本文基于豆瓣上对某一部电视剧评论的爬取,然后进行SnowNLP情感分析,最后生成词云,给人一个直观的印象 1. 爬取评论 以前段时 ...

  9. python商品评论数据采集与分析可视化系统 Flask框架 requests爬虫 NLP情感分析 毕业设计 源码

    一.项目介绍 python商品评论数据采集与分析可视化系统 Flask框架.MySQL数据库. requests爬虫.可抓取指定商品评论.Echarts可视化.评论多维度分析.NLP情感分析.LDA主 ...

最新文章

  1. MATLAB实例路径与安装路径
  2. JS-排序详解:冒泡排序、选择排序和快速排序
  3. Oracle 的关联子查询(correlated subquery) 简介.
  4. 史上最全站点降权原因解析
  5. ehcache memcache redis 三大缓存
  6. python pyecharts 折线图_python数据大屏pyecharts库2020.8.31
  7. mysql的内外连接_MYSQL的内外连接
  8. 多线程---ReentrantLock
  9. oracle 定时器时间分区_Oracle数据库之oracle按时间分区以及自动分区
  10. 阿里公共DNS 正式发布了
  11. js中的call和apply方法的区别
  12. 论“天才球员”有多重要!
  13. NET面试题:在C#中如何声明一个类不能被继承
  14. 聚类算法教程(3):层次聚类算法Hierarchical Clustering Algorithms
  15. (Github)增强插件、脚本
  16. Aiseesoft Data Recovery for mac(专业数据恢复软件)
  17. C++ 迭代器 删除(erase)插入(insert)之后失效
  18. C语言-学生管理系统
  19. POI 4.1.2 word转html(保留样式及图片)
  20. 全志r16android sdk,全志R16的android4.4.2平台點亮gc2145(evb30)版本:V1.1(分色排版)...

热门文章

  1. 深度整理 | 欧盟《一般数据保护法案》(GDPR)核心要点
  2. PRN(20200816):A Hierarchical Deep Convolutional Neural Network for Incremental Learning [Tree-CNN]
  3. Linux下修改conda默认启动环境
  4. 【Houdini】HDA的制作和参数编辑
  5. RFO SIG:openEuler AWS AMI 制作详解
  6. TASKLIST命令的作用与用法
  7. react router 从登录页面跳转到主页面
  8. keil5安装芯片包及重装软件心得
  9. Selenium基础之关闭页面和浏览器
  10. 「思考」为什么现在面试总是面试造火箭?