_
X
X
王
名
姓
8
1
0
2
_
号
学
专
本
1
0
8
1
本
计
级
班
术
技
与
学
科
机
算
计
业
专
院
学
程
工
气
电
与
息
信
院
学
鲁东大学 2020-2021 学年第 1 学期
2018 级 计算本 1801 专业 课程名称 网络编程
课程号(2220181212-01)考试方式:课程设计论文
题 目 一
二
三
四
五
总分
统分人
得 分
论文题目:电影评论的爬取及分析
章节和分值分布:
系统开发背景(5 分)
系统相关技术介绍(10 分)
系统分析与设计(30 分)
系统实现(40 分)
附录:全部程序源代码(15 分)
要求:1.每章的内容应图文并茂,具体格式参见附件文件;2.论文页数至少在 15 页以上,
要求 A4 纸打印;3.参考文献至少 5 篇以上;4.程序能够演示;5.除了纸质版论文,论文电
子版和源程序也要提交。
教师评语:
教师签字:
年 月 日
鲁东大学课程设计论文
目录
1 系统开发背景 ................................................................................................................................. 1
2 系统相关技术介绍 ......................................................................................................................... 2
2.1 Python 语言 ..........................................................................................................................2
2.2 requests 库............................................................................................................................ 2
2.3 lxml.etree 的使用................................................................................................................. 2
3 系统分析与设计 ............................................................................................................................. 3
3.1 系统功能模块组成 .............................................................................................................. 3
3.2 实现功能和目标................................................................................................................. 4
3.3 爬取模块设计 ..................................................................................................................... 4
3.3.1 电影信息爬取........................................................................................................... 4
3.3.2 电影评论的爬取....................................................................................................... 5
3.3.3 爬取过程中下一页的处理....................................................................................... 5
3.4 窗口界面设计 ..................................................................................................................... 5
4 系统实现 ..........................................................................................................................................6
4.1 爬取电影信息模块实现 ..................................................................................................... 6
4.1.1 实现界面 .................................................................................................................. 6
4.1.2 实现代码 .................................................................................................................. 8
4.2 爬取评论实现 ..................................................................................................................... 9
4.2.1 实现流程及界面 ...................................................................................................... 9
4.2.2 实现代码 ................................................................................................................ 10
4.3 词云模块实现 ................................................................................................................... 12
4.3.1 实现流程及界面 .................................................................................................... 12
4.3.2 实现代码 ................................................................................................................ 14
5 系统开发总结 ............................................................................................................................... 15
参考文献.......................................................................................................................................... 15
附录...................................................................................................................................................16
鲁东大学课程设计论文
电影评论的爬取及分析
摘要:在大数据的环境下,网络资源越加丰富,传统的搜索引擎已经不能够满足大众获取
信息的需求,随着计算机逐步的发展,网络爬虫的出现进入了人们的视野。本文主要讲述了
网络爬虫模块以及操作流程,并通过给定的网址快速爬取影评信息,进行分词做成词云图形
式展示出来。爬取豆瓣网上面的电影评论数据具有很重要的作用。电影评论数据是 NLP(自
然语言处理)重要的数据。通过电影评论数据集可以进一步做中文分词、命名实体识别、关
键词提取、句法分析、文本向量化、情感分析、舆情分析等进一步的数据处理和应用。
1 系统开发背景
当今互联网技术迅速发展,出现了包括大数据和云计算等等新型的技术,在
如此庞大的数据量中获取自己想要的需要耗费大量的时间,搜索的结果准确率也
不是很高。豆瓣网是一家基于用户对于图书、电影和音乐兴趣而搭建的社交网站,
由杨勃创立于 2005 年。豆瓣网推崇算法,根据用户对音乐、书、电影等进行的
操作,自动给出同类趣味和友邻推荐。基于记录和分享而生成的“用户价值”是豆
瓣的核心竞争力。豆瓣网的一大特色是不做运营,用户自发组建的小组是豆瓣特
有的文化和社区产物。本文通过利用 Python 爬虫分类中的聚焦型爬虫网络系统
以及 python 窗体的相关应用,在指定的网页下抓取相关的信息。在本文的实验
中通过在电脑网页抓取豆瓣网中排名 top250 电影的影评信息,再通过选取要爬
取的电影爬取电影评论,成功的爬取后在窗体中显示并以.csv 的格式保存到本
地,接着利用 jieba 分词对下载好的影评信息进行过滤筛选,将高频率出现的词
语通过影评词云图的形式展现在面前。这样的爬取信息大大的提高了爬取信息的
准确性,提高了资源的利用率,节约了查找信息的时间,真正的实现了有目的性
的抓取信息。并且以窗体的形式展示更加具有可用性、易操作性。
1
鲁东大学课程设计论文
2 系统相关技术介绍
2.1 Python 语言
为了爬取影评信息,本系统采用 requests 以及 lxml 模块,通过 requests 中的
get 请求网站信息,再通过 lxml.etree 建立解析树,etree.HTML()可以用来解析字
符串格式的 HTML 文档对象,将传进去的字符串转变成_Element 对象。作为
_Element 对象,可以方便用 xpath 获取 html 源码中的内容。
2.2 requests 库
Requests 是用 Python 语言编写,基于 urllib,采用 Apache2 Licensed 开源
协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足
HTTP 测试需求。Requests 的哲学是以 PEP 20 的习语为中心开发的,所以它比
urllib 更加 Pythoner。Requests 中 get 请求是常用的请求之一,相对于 post 请求
简单些,对于传参数的 get 请求有的还是有难度的。使用 requests 方法后,会返
回一个 response 对象,其存储了服务器响应的内容,对已经提到的内容获取文本
方式的响应体实例:当访问时,会使用其响应的文本编码进行解码,并且可以修
改其编码使其自定义的编码进行解码。
2.3 lxml.etree 的使用
Element 类型是一种灵活的容器对象,用于在内存中存储结构化数据。
etree.HTML()可以用来解析字符串格式的 HTML 文档对象,将传进去的字符串转
变成_Element 对象,可以使用 xpath 获取 html 源码中的内容。
2
鲁东大学课程设计论文
3 系统分析与设计
3.1 系统功能模块组成
本系统主要内容是爬取影评信息并生成相应词云,具体的功能模块组成如图
1 所示。
图 1 系统功能模块图
3
鲁东大学课程设计论文
3.2实现功能和目标
系统功能分析是在系统开发的总体任务的基础之上完成的。电影影评爬取主
要有以下几项功能:
1.爬取豆瓣 top250 的电影名称和每部电影的链接。
2.保存 top250.csv 电影信息。
3.输入要爬取的电影名称,爬取前 20 页的影评信息。
4.保存’电影名称’.csv 影评信息。
5.词云展示影评信息关键词。
3.3爬取模块设计
3.3.1 电影信息爬取
图 2:电影源代码信息
打开豆瓣电影 top250 所在的网页;在浏览器上打开源代码页面,找到电影信
息的源代码,在 div class=”hd”,下找到电影详细链接所在的目录 a 用@href 获取
中间内容,即为该电影链接,在其包含的下一目录的第一个 span 中获取电影名
称。获取结果如下所示:
需要提取的数据包括(可以使用 xpath 进行匹配):
详细链接:html.xpath('//div[@class="hd"]/a/@href')
电影名称:html.xpath('//div[@class="hd"]/a/span[1]/text()')
4
鲁东大学课程设计论文
3.3.2 电影评论的爬取
图 3:评论源代码信息
同理可得电影评论:html_elem.xpath('//div[@class="comment"]/p/span[1]/text()')
3.3.3 爬取过程中下一页的处理
首先使用 Chrome 浏览器打开 豆瓣电影 Top250,很容易可以判断出网站是
一个静态网页然后分析网站的 URL 规律,以便于通过构造 URL 获取网站中所
有网页的内容:
首页:https://movie.douban.com/top250
第二页:https://movie.douban.com/top250?start=25&filter=
第三页:https://movie.douban.com/top250?start=50&filter=
…
不
难
发
现
,
URL
可
以
泛
化
为 https://movie.douban.com/top250?start={page}&filter=,其中,page 代表页数
最后我们还需要验证一下首页的 URL 是否也满足规律,经过验证,很容易可以
发现首页的 URL 也满足上面的规律。电影评论的爬取也是满足这个规律。
3.4窗口界面设计
根据系统图以及要实现的功能设计窗口,添加一个按钮实现爬取豆瓣 top250
电影名称和详细链接;添加一个按钮实现对爬取结果电影名称的显示;添加一个
5
鲁东大学课程设计论文
Entry 实现对用户输入电影名称的读取;添加对该电影评论爬取的按钮,实现评
论的爬取;添加一个按钮实现展词云的功能;在下方放置一个滚动文本框,实现
对所做操作的展示。具体窗口设置如下:
图 4:窗体设计图
4 系统实现
4.1 爬取电影信息模块实现
4.1.1 实现界面
6