一、爬取豆瓣影评

基本思路:先获取每个电影的评论区链接,然后依次进入其评论区爬取评论。选取10部电影,每部200条评论。

用到的包为:BeautifulSoup,urllib

这里选取的链接为:豆瓣电影,打开后内容如下:

直接审查元素,找到每部电影的标签位置,如下图:

因此,找到此标签的代码为:

lists = bsobj.find('ul', {'class': 'lists'}).findAll('li', {'class': 'list-item'})

其中bsobj是该网页的bs对象。

接下来我们需要找到这部电影短评的链接,如下:

https://movie.douban.com/subject/26985127/comments?status=P

这是短评首页,翻页观察其变化:

https://movie.douban.com/subject/26985127/comments?start=20&limit=20&sort=new_score&status=P(第2页)

https://movie.douban.com/subject/26985127/comments?start=40&limit=20&sort=new_score&status=P(第3页)

唯一变化的是start后的数字,一页有20条评论,subject后的数字是电影的id号,只要获取电影的id号,就可构造它的短评网页的url。

评论区的位置:

获取评论区标签的代码为:

comments=reviewBSobj.findAll('div',{'class':'comment-item'})

由于之后要对评论进行朴素贝叶斯,所以要给评论打上标签 。这里方便起见,对评分三星以上的为积极,标记为0,二星以下为消极,标记为1。

评分位置如图:

allstar后的数字30表示三星,爬取代码如下:

star=comment.find('span',{'class':re.compile(r'^allstar(.*?)')})

这里用到了正则表达式。 另外,有的评论没有星级评分,打不了标签,因而直接丢弃。

if star is None:continue
if int(star['class'][0][7])>2:target=0
else:target=1

target是标签,取值0或1。

在保存之前,先对数据进行简单的清洗:去掉标点符号以及特殊符号,只保留汉字。

content=comment.p.get_text().strip()
pattern = re.compile(r'[\u4e00-\u9fa5]+')
filterdata = re.findall(pattern, content)
cleaned_comments = ''.join(filterdata)

content是评论的内容,pattern是正则表达式,cleaned_comments是清洗完的数据。

f = open('review.txt', 'w', encoding='utf-8')

数据保存在review.txt文件中。

1、代码解析

getbs4函数:返回bs对象

def getbs4(url):''':param url:网址:return: 返回BeautifulSoup对象'''try:html=urlopen(url)bsobj=BeautifulSoup(html,'html.parser')html.close()except (HTTPError,URLError):return Nonereturn bsobj

getFilmList函数:返回电影id列表

def getFilmList(url):''':param url:网址:return: 返回电影id的列表'''bsobj = getbs4(url)if bsobj == None: returnlists = bsobj.find('ul', {'class': 'lists'}).findAll('li', {'class': 'list-item'})return lists

getReview函数:爬取影评的主函数

def getReview(url,n):''':param n:需要爬取的爬取页数:return:爬取影评'''lists = getFilmList(url)print('电影总数:'+str(len(lists)))f = open('review.txt', 'w', encoding='utf-8')for i in range(1):print('开始爬取第%d电影,电影名为%s'%(i+1,lists[i]['data-title']))reviewUrl='https://movie.douban.com/subject/'+lists[i]['id']+'/comments?status=P'text=[]for j in range(n):reviewBSobj = getbs4(reviewUrl)if reviewBSobj == None: returncomments=reviewBSobj.findAll('div',{'class':'comment-item'})print('-----第%d页-----' % (j+1))for comment in comments:star=comment.find('span',{'class':re.compile(r'^allstar(.*?)')})if star is None:continueprint(star)if int(star['class'][0][7])>2:target=0else:target=1content=comment.p.get_text().strip()pattern = re.compile(r'[\u4e00-\u9fa5]+')filterdata = re.findall(pattern, content)cleaned_comments = ''.join(filterdata)text.append(str(target)+' '+cleaned_comments+'\n')print('-------------')reviewUrl='https://movie.douban.com/subject/'+lists[i]['id']+'/comments?start='+str(20*j+20)+'&limit=20&sort=new_score&status=P'f.writelines(text)f.close()

从爬取豆瓣影评到基于朴素贝叶斯的电影评论情感分析(上)相关推荐

  1. 从爬取豆瓣影评到基于朴素贝叶斯的电影评论情感分析(下)

    基于朴素贝叶斯的电影评论情感分析 用到的包:pandas.jieba(分词工具) file=open(r"review.txt",'r',encoding='utf-8') rev ...

  2. 朴素贝叶斯情感分析评分python_「豆瓣影评」从爬取豆瓣影评到基于朴素贝叶斯的电影评论情感分析(上) - seo实验室...

    豆瓣影评 一.爬取豆瓣影评 基本思路:先获取每个电影的评论区链接,然后依次进入其评论区爬取评论.选取10部电影,每部200条评论. 用到的包为:BeautifulSoup,urllib 这里选取的链接 ...

  3. 使用朴素贝叶斯对电影评论分类

    本文内容: 使用朴素贝叶斯对电影评论分类 1.数据集讲解: 2.具体实现: 3.实验结果: 实验总结 代码地址 使用朴素贝叶斯对电影评论分类 1.数据集讲解: ​ 该数据集是IMDB电影数据集的一个子 ...

  4. 情感分析朴素贝叶斯_朴素贝叶斯推文的情感分析

    情感分析朴素贝叶斯 Millions of tweets are posted every second. It helps us know how the public is responding ...

  5. 朴素贝叶斯情感分析评分python_比朴素贝叶斯更优秀的情感分析方法?答案在这里...

    作者|Samuel Pilcer 译者 & 编辑|Debra AI 前线导读:根据在线评论和评分,我们可以为客户提供关于其信誉度的深刻见解.我们会拆解评论文本了解评论的内容,并告诉我们的客户他 ...

  6. python爬取京东商品数据要先登录_京东商品评论情感分析|文本数据预处理

    本文爬取了十款热销手机的文本评论数据后,首先对文本评论数据做文本预处理,文本评论数据中存在大量的无价值信息,引入无用的文本数据,对其作情感分析,显然没有价值,得出的文本挖掘结果也不尽人意.所以对于文本 ...

  7. 用python爬取豆瓣影评及影片信息(评论时间、用户ID、评论内容)

    爬虫入门:python爬取豆瓣影评及影片信息:影片评分.评论时间.用户ID.评论内容 思路分析 元素定位 完整代码 豆瓣网作为比较官方的电影评价网站,有很多对新上映影片的评价,不多说,直接进入正题. ...

  8. python爬取豆瓣影评生成词云的课程设计报告_Python爬取豆瓣影评,生成词云图,只要简单一步即可实现。...

    最近看了一部电影<绣春刀>,里面的剧情感觉还不错,本文爬取的是绣春刀电影的豆瓣影评,1000个用户的短评,共5W多字.用jieba分词,对词语的出现频率进行统计,再通过wordcloud生 ...

  9. 爬虫实战2(上):爬取豆瓣影评

       这次我们将主要尝试利用python+requsets模拟登录豆瓣爬取复仇者联盟4影评,首先让我们了解一些模拟登录相关知识补充.本文结构如下: request模块介绍与安装 get与post方式介 ...

最新文章

  1. HelloServlet
  2. 015_Redis创建集群
  3. c++迭代器模式iterator
  4. FTP服务器和客户端源代码编写问题(ftp server client source)
  5. java飞行记录器是什么_运行java飞行记录器JFR(java flight recorder)
  6. DataGridView的Cell事件的先后触发顺序
  7. 购物网站php模版,运动服装购物网站模板
  8. pcDuino–voip服务器设置呼叫彩铃
  9. pta 编程题10 Root of AVL Tree
  10. 【Prison Break】第八天(4.4)
  11. arm平台下的反汇编pdf_stm32逆向与安全科普,bin文件逆向反汇编
  12. JAVA计算机毕业设计实验室耗材管理系统(附源码、数据库)
  13. 进销存软件排行榜前十名!
  14. 模2运算_模二除法和CRC循环冗余校验
  15. appium环境搭建全套
  16. 流利阅读 2019.2.22 Duke University apologizes over professor’s email asking Chinese students to speak En
  17. 【程序员的浪漫】花式表白
  18. The last dimension of the inputs to `Dense` should be defined. Found `None`.
  19. 11-17今日分享SINGSALE使用虚拟卡支付教程
  20. jsp中点击img放大图片

热门文章

  1. C++ 20 新特性简介
  2. 【性能】perf + 火焰图分析软件性能瓶颈
  3. PyTorch 训练时中遇到的卡住停住等问题
  4. 《青山翠影》叁 爱情的模样 | 似懂非懂
  5. 新手如何做网站?成都网站建设达人浅析——网站制作新手教程
  6. 人工智能、物联网时代,嵌入式思维的应用
  7. String index out of range: -824264796 不明的原因导致驱动程序造成失败,请回报这个例外。
  8. 计算机word怎么设置页眉,在Word中插入不同页眉的技巧-word技巧-电脑技巧收藏家...
  9. 遥感图像存储格式BSQ/BIL/BIP
  10. Incorrect column count: expected 1, actual 5