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

分三个模块实现贴吧评论敏感词识别及情感分析研究:“评论爬虫抓取”、“评论敏感词识别”、“评论情感分析(积极或消极)”。数据存储于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. python 图形化socket编程_Python黑帽编程2.8 套接字编程
  2. c语言控制台光标的坐标范围,C语言之实现控制台光标随意移动的实例代码
  3. 如何用代码的方式取出SAP C4C销售订单创建后所有业务伙伴的数据
  4. VSCode插件开发全攻略(六)开发调试技巧
  5. ORA-04031: Unable To Allocate 32 Bytes Of Shared Memory
  6. jsp页面模块的来源
  7. VS2010 + C#4.0使用 async + await
  8. fis php,在node.js上安装fis后显示fis不是内部命令,安装fis的环境变量配置问题
  9. 串口.Qt532测试(异步)
  10. Candence学习篇(4)allegro软件中class 和subclass的概念
  11. 【MQTT】SpringBoot整合MQTT(EMQX)
  12. 区块链究竟是如何工作的?
  13. frame和iframe的使用与总结
  14. 软件测试黑盒测试代码,软件测试黑盒测试代码.doc
  15. tensorRT onnx中属性名相同,但实际大小不同生成问题
  16. 2020年复旦大学计算机学院夏令营经历
  17. javase_test_day13
  18. python毒酒检测_一道著名的毒酒问题
  19. linux centos7 解决挖矿病毒kthreaddk 高CPU占用
  20. SpotlessCity:第一个干洗服务网站 反映纽约人有多懒

热门文章

  1. 快速回复软件,请查收!
  2. java二维数组杨辉三角_java数组学习:使用二维数组输出杨辉三角
  3. 路由器固件的几种烧写方式
  4. C语言一球从100米高度自由落下
  5. YottaChain创始人王东临:存储公链进军商用市场的必杀技!
  6. 改变Keil5所有窗口的背景颜色
  7. HTML中 dt dl dd ul li 等标签 英语单词
  8. 职场上,除了拼才华,资源和关系也很重要
  9. 阿瓦隆卡牌代码C语言,阿瓦隆传说纸牌2
  10. Realme GT Neo闪速版 ROOT 解锁BL教程