【基于Python的网络爬虫研发系统设计7400字】_第1页
【基于Python的网络爬虫研发系统设计7400字】_第2页
【基于Python的网络爬虫研发系统设计7400字】_第3页
【基于Python的网络爬虫研发系统设计7400字】_第4页
【基于Python的网络爬虫研发系统设计7400字】_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于Python的网络爬虫研发系统设计摘要现如今社会正在进行高速信息化的发展,网络已经成为人们获取信息的一种重要方式,很多人喜欢看电影来满足自己的精神需求,那我们如何能够快速的了解一部电影的好坏呢,我们可以采用爬虫去爬取豆瓣大量的影评信息并对其进行简单的可视化分析,大致了解一部电影的优劣基本情况,Python作为一种编程语言,其有着很实用的模块和库,可以在信息处理上更加直观自然,利用Python爬虫去获取信息是一个很不错的选择。本文采用Python编写爬虫代码去爬取豆瓣指定电影的影评并且对影评进行一个评分的统计和对关键字进行一个数值的统计,可以让人更直观的了解该电影的一个优劣情况,开发工具是PyChram,并且使用了BeautifulSoup,Matplotlib等库完善爬虫程序。最终程序可以实现对豆瓣某一电影的影评数据的爬取及保存,并且对其评分进行一个饼状图统计,对其中多次出现的关键字进行一个次数的直方图统计,以便于用户直观了解。关键词:Python,爬虫,豆瓣影评,可视化目录TOC\o"1-3"\h\u摘要 IIAbstract 3第一章绪论 61.1毕业设计背景及意义 61.2国内外现状研究 61.3研究目的 7第二章相关技术介绍 82.1Python语言 82.1.1Python语言的产生和发展 82.1.2Python语言的原理 92.1.3Python语言的特点 102.1.4Python语言的缺点 112.2URL 122.2.1URL的定义 122.2.2URL的组成部分 122.3Html 132.3.1Html的定义 132.3.2Html的特点 132.4开发工具 132.4.1Pycharm 13第三章项目需求和设计 153.1页面需求 153.2抓取内容需求 163.3保存需求 16第四章项目分析和实现 174.1总体分析 174.2具体模块分析及实现 204.2.1爬取模块 204.2.2存储模块 224.2.3可视化分析模块 23第五章项目设计测试结果分析及漏洞错误修改 265.1项目测试 265.1.1登录测试 265.2结果分析 285.3漏洞错误及修改 30第六章总结 326.1收获与成长 326.2不足 32参考文献 33

绪论1.1毕业设计背景及意义爬虫,指的是能够通过编写代码在指定网站页面或者是app应用里爬取到我们所需要的数据的一种程序。在现如今高速发展的互联网情况下,当前互联网技术领域的两大趋势分别是人工智能和大数据,大数据具有数据体量巨大,处理速度快,数量种类多和商业价值高的特点[1]。数据是互联网组成的一个重要部分,而爬虫可以帮助我们快速获得大量的互联网数据,是一种非常有效的手段。Python语言对于编写爬虫数据有很大的优势,抓取网页接口文档更加简洁,并且python有很多的库和模块,对于数据处理也更加简便。1.2国内外现状研究爬虫是搜索中一个很重要的技术元素,1993年MatthewGray’sWandered创建了第一个爬虫程序(有记录的),到现在已经过去了20多年了,这期间爬虫也是飞速的发展,爬虫也分为很多种,比如通用网络爬虫,通用网络爬虫通过获取网络链接并且提取链接,在通过HTML解析网页从而获取数据,并将其保存下来,通用网络爬虫有两种常用的爬取策略:深度优先策略(DFS)和广度优先策略(BFS)。常用的爬虫实现策略有以下几种:1.定义爬虫爬行程序2.深层次爬行爬虫程序3.抽样爬虫程序(评估web互联网规模)4.选择性爬虫程序(限制下载不相关的web页)等等1.3研究目的本设计通过爬取豆瓣某指定电影影评并且分析数据,可以帮助用户快速了解该电影的一些基本情况,了解该电影的一些优点以及缺点,通过对关键字的提取,可以了解到该电影的特点,以及其他用户对于该电影的一个评分情况,让用户可以有选择性的观看影片,使用Python编写爬虫代码程序,更加的方便,数据也容易处理,可以让用户更加直观的了解影片背后的用意(我们通过电影表面无法直观看到的信息)。

第二章相关技术介绍2.1Python语言2.1.1Python语言的产生和发展Python是一种计算机程序设计语言。他的创始人是吉多•范罗苏姆(GuidovanRossum),于1989年圣诞节期间开发。关于起名来由,也是很有趣,因为他本人是英国一个喜剧团体MontyPython的粉丝,所以就起了Python这个名字。ABC是一种教学语言, 吉多觉得,ABC是一种优美且强大的语言,可以说是非专业程序员的福音。但是ABC语言没有获得成功,其中的原因,吉多觉得它不具有开发性。所以他决定在Python中去改变这一缺点。1991年,第一个Python解释器诞生,它是用C语言实现的,并能够调用C语言的库文件[2]。由此Python诞生了。现如今Python已经成为最受欢迎的程序设计语言之一。2020年度的编程语言排行榜,Python连续四年夺冠[3]!如图1-1所示:图SEQ图\*ARABIC1-12020年编程语言排行榜Python非常简单易懂,而且其具有扩展,很多国外的研究机构使用Python做科学计算研究,例如卡耐基梅隆大学的基础编程就是使用Python语言。Python语言拥用有很多的扩展库,其开发环境非常适合工程技术、科研人员处理实验的数据[4],还可用于制作图表,甚至可以用来开发科学计算应用的程序。2.1.2Python语言的原理(1)Python是一种解释性语言,它的基本原理是:由Python解释器将代码(.py文件)编译成一个.pyc(字节码)文件,然后让Python虚拟机去运行字节码[5],以此完成程序的执行。详细步骤如下:(2)Python将.py文件看成一个module(模块),并且对其中的主module执行将其编译成一个字节码对象PyCodeObject(在Python语言里一切都是对象,如函数,类型,类都是对象),我们看见的.pyc文件是PyCodeObject这个字节对象在硬盘上的表现形式。(3)Pythontest.py对test.py编译成字节码并且执行,但是由于Python将主模块当成了临时只使用一次的模块,因此不会生成test.pyc。当我们运行Python代码时,如果Python发现存在了相应的.pyc文件,那么它会去检查相应的Python文件的一个修改时间,如果.pyc创建时间与Python文件的一个修改时间不同,那么Python文件就发生了变化,这时,就会重新生成一个.pyc文件。(4)PyCodeObject,Python的编译结果是一个PyCodeObject字节码对象。.pyc文件格式,当我们加载模块时,其所对应的PyCodeObject字节码对象会被编译进.pyc文件。(5)分析其中的字节码,Python提供一个函数compile,它可以编译和查看Python代码。(6)解析指令的序列。(7)执行字节码。2.1.3Python语言的特点(1)简单:Python的语法十分优美,没有一些繁琐的特殊符号,设计思想简洁,阅读性良好。(2)易学:Python十分容易上手,他的语法很简单,只需要简单的命令行交互即可上手学习。(3)公共免费:Python都是免费供给的,你可以自由拷贝这个软件,去阅读它的源程序,并且可以去进行修改,可以将修改后的内容放入新的软件之中,这个优点在于,可以有很多的人对Python进行研究和改良,可以促进Python的发展。(4)内存自动管理:当使用Python时,不用去担心管理程序内存的问题,因为在Python中,内存管理是自动的。(5)可移植:上面说过,Python是公共免费的,所以它也被很多平台所移植,如:Windows、Linux、MacOS等等。(6)高编译:很多的编程语言都是需要将源代码编译成计算机可识别的二进制格式,这样就比较繁琐,编译时间比较长,而Python解释器将源代码编译成字节码的形式,然后将其翻译成机器语言运行,十分的方便。(7)可扩展:Python可以使用本身语言进行编写,还可以使用其他语言,如java,可是说是十分的快捷方便。(8)大量的第三方库:Python有很多实用的第三方库,比如matplotlib库,是一个2D绘图库,在本设计中使用其进行了一个评分的饼状图展示,wordcloud库,是一个词云库,根据一些词语出现的频率形成一个大小不一的视觉效果,感觉十分的有趣。正因为有了这些库的存在,使得Python在web开发,爬虫,科学计算等方面有着十分重要的用途。2.1.4Python语言的缺点(1)速度慢:Python是解释型语言,所以Python执行代码是由解释器一行行编译成机器码,所以相对于C语言直接翻译来说,速度上确实慢了不少。(2)不兼容:Python2和Python3是无法兼容的,对于所有的Python工程师来说,不兼容使得他们十分的苦恼。2.2URL2.2.1URL的定义URL是统一资源定位符,通俗的来说就是网页地址,一般来说,网页的文件都有一个URL,这里可以理解为名字代号,这就可以很容易知道它的位置,以及浏览器如何去处理它。2.2.2URL的组成部分一般来说,URL分为三部分:(1)协议(也可以叫做服务方式)。(2)保存有数据资源的主机ip地址(也有包括端口号)。(3)主机数据资源的具体地址,比如文件名和目录[6]。2.3Html2.3.1Html的定义Html是超文本标记语言,它是一种标记语言,是用来制作网页的一个重要工具。其包括“头”和“主体”部分,“头”顾名思义,其中包含了网页的相关信息,而“主体”则是提供了网页的具体内容。2.3.2Html的特点(1)简便性:Html采用了超集方式,操作更简便。(2)可扩展性:Html采用了标识符的要求和子元素的方式,使系统扩展得到了保证。(3)平台无关性:Html可以在多个平台上使用,没有限制。(4)通用性:Html是一种网络通用语言,我们可以用它来建立一个既有图片又有文本的网络页面,并且任何人、任何电脑或浏览器都可以查阅这个网页。2.4开发工具2.4.1PycharmPycharm是一种PythonIDE,它包含了很多使用的库和一些实用的工具,如调试,代码跳转,版本控制等,Pycharm是Python专业人员和新手使用的良好工具。本次设计中,所有Python开发工作均是由Pycharm完成,其中使用了BeautifulSoup,wordcloud,matplotlib等重要库,完善了设计的内容。

第三章项目需求和设计3.1页面需求本项目目的在于爬取豆瓣网站的电影评论信息,通过浏览页面信息发现未登录状态只能查看部分评论,想要查看后续页面,是需要进行登录操作。如图3-1图3-2所示:图3-1页面信息图3-2无权限操作3.2抓取内容需求打开其中一部电影的页面,发现它其实是非动态的一个渲染方式,就是静态网页,静态网页是指不应用程序而直接或间接制作成Html的网页,每一个页面都有一个固定的URL地址[7],这里可以通过直接请求它的url来获取我们所需要的数据,之后在通过一系列的库如beautifulsoup库等去进行解析处理。3.3保存需求 当爬取到评论信息时,是需要将其保存在一个Excel表格中,并且之后通过读取其中的信息使用wordcloud库,matplotlib库对其进行一个简单的可视化分析。

第四章项目分析和实现4.1总体分析上面有说到过,在浏览豆瓣电影页面过程中,发现登录后可以有权限查看更多的评论信息,信息这东西,肯定是越多分析的结果越准确,而且,之前在未登录的情况下编写了一个简单的代码去爬取影评信息,刚开始确实能够爬取,几次过后,问题来了,ip被封了,爬虫最怕的莫过于ip地址被封,所以这里决定编写一个登录模块的代码,既可以爬取更多的信息,还可以免于被封ip的风险,一举两得。打开豆瓣电影的登录界面,可以看到一个密码登录栏。如图4-1所示:图SEQ图\*ARABIC2-1登录界面既然要编写登录模块,就需要弄清楚在登录的过程中发生了什么,这里可以打开F12控制台,但是这样显然不够,还需要使用Fidder去进行一个抓包操作这边简单的试探了几次,发现它的登录接口还是比较简单的,具体接口为/j/mobile/login/basic,查看它的请求参数,发现它就是一个简单的Requests请求,没有进行加密操作,登录参数为:name:用户名,password:密码,remember:记住密码。具体参数为RequestMethod(请求方法),StatusCode(状态码)和RemoteAddress(远程地址),状态码为200则表示连接成功,一般客户端向服务端发送请求后得到的应该是200这个正确响应码,一般错误有418和403。如图4-2所示:图4-2登录界面Requests常用的是requests.get()方法,这里说一下Repsonse的一些对象属性,data.status_code是网页请求的返回状态,data.text是返回对象的文本内容,data.content是通过猜测返回对象的形式(二进制),data.encoding则是返回对象的编码形式,data.apparent_encoding是负责响应内容的编码方式。这里可以用Fidder进行一个抓包操作,通过模拟请求抓取,发现了url中含有login字段,应该就是post登录请求了,并且,还使用错误密码进行了一个简单的测试。登录关键代码这样编写,如图4-3图4-4所示:图4-3错误测试图4-4登录模块这些问题解决后,一个大概执行的一个流程就很清楚了:登录——>爬取数据——>存储数据——>可视化分析。如图4-5所示:图4-5总流程图4.2具体模块分析及实现4.2.1爬取模块在成功登录后,就可以带着登录信息去爬取评论数据了,爬取首先使用requests库向url进行一个请求,豆瓣的页面是一个传统的交互方式,当切换页面时,会发现它有一个ajax请求,这个请求实际上就是通过对url规律的一个分析,分析在请求过程中参数发生了什么变化,通过观察发现索引的信息是json格式的数据,这个里面包含了我们需要爬取的电影的链接,Response获取的网页内容再使用Beautifulsoup库进行一个解析,BeautifulSoup库为可用于从HTML中提取数据的高级页面创建一个解析树,而使得每一个节点都成为它的对象[8],如图4-5所示:图4-5页面信息获取电影链接后,使用正则表达式和Xpath去定位电影信息,通过这一部分的接口,可以获取到部分的评论数据,所以没有必要再去请求整个页面信息,然后去提取关于评论这一部分的信息了,通过观察,发现这部分的url的变化很明显,就是一个start的数值的变化,每20表示一个页面信息,所以这里选择直接去拼凑它的一个url,直到无法正确操作为止。访问了url之后,可以通过css选择器进行一个数据的筛选,因为评论的样式差不多,在html里相当于同在一个列表里的元素。通过观察ajax接口所返回的一个数据,可以通过class搜索,将其分成若干个部分进行操作。如图4-6所示:图4-6页面信息具体操作如下:通过requests去发送请求从而获取数据结果,之后通过BeautifulSoup去解析HTML格式文件。其中的数据分析对应部分也是比较容易找到,其所有的评论数据都在id=“comment”的div标签下,单独的一条评论则是在class=“comment-item”的div标签内,这里allstar50rating表示用户打了5星,其中进行了数据的转换,vote-count代表了用户的投票数,short表示了用户写的评论,href表示了该用户的主页信息,便于识别,其地址为/people/157237265/。如图4-7所示:图4-7对应内容这里编写了一个测试代码,可以简单爬取一些评论数据。如图4-8所示:图4-8简单测试4.2.2存储模块爬取了数据,肯定需要将其保存下来,所以将数据存储到csv中。这里使用一个xlwt库将爬取到的数据保存在Excel表格中,之所以选择表格,是因为,其对于数据的整理十分的直观,让人能够很清楚的了解。如图4-9所示:图4-9存储信息之后采用了xlrd库可以对Excel表格中的数据进行一个读取操作。4.2.3可视化分析模块数据可以保存和读取之后,就要进行对影评最后的一个分析操作了:可视化分析。可以看到,这里有很多信息,包括影评信息,评分信息,点赞数,用户名等等,这里决定对评分信息进行一个饼状图的统计,对影评中的关键字进行一个词云的展示,对其关键字的频率进行一个直方图的展示。具体实现步骤如下:通过xlrd读取Excel中的信息,对其中的评论信息,用分词处理去统计它的一个频率,将其中频率最高的一些字词做成词云展示,并且通过直方图形式将它的一个频率更直观的展现出来。下面展示的是《送你一朵小红花》,这部电影觉得观感很不错,就拿出来作个例子分析一下,这里选取了影评里出现频率最高的300个词,分为两部分通过词云展示出来。柱状图里横坐标表示出现的关键字,纵坐标表示其出现的频率。如图4-10图4-11图4-12所示:图4-10送你一朵小红花词云信息1图4-11送你一朵小红花词云信息2图4-12送你一朵小红花柱状图将其中的星数评价信息通过matplotlib库做成一个饼状图进行一个展示。饼状图分为五个部分,为别用五种不同的颜色代表了用户所评价的星数(1星-5星),以及它们分别的占比,使得用户更加直观的了解,如图4-13所示:图4-13送你一朵小红花饼状图到此为止,一个基本的豆瓣网络爬虫就完成了。

第五章项目设计测试结果分析及漏洞错误修改5.1项目测试5.1.1登录测试豆瓣网站对于未登录的用户只提供一小部分的查看权限,这边在登录界面故意输错密码,结果只能够爬取到220条影评信息,信息比较少,并且是处于未登录状态,爬取风险比较大,ip地址被封可能性比较大。如图5-1图5-2所示:图5-1错误登陆图5-2爬取信息当正确输入密码时,程序所爬取的影评信息达到了500条,众所周知信息越多,分析结果越准确,并且处于登录状态,爬取信息比较安全。如图5-3图5-4所示:图5-3正确登陆图5-4爬取信息由此可以知道,这个登录模块确实可以在后台登录之后再去爬取信息。5.2结果分析这里简单展示一下设计的结果,并且分析对比其中两部电影的影评词云结果,为了结果更加准确,选取了两部很具有代表性的电影,一部是爱情类的《泰坦尼克号》,另一部则是科幻类的《星际穿越》。爬取了这两部电影的影评后,开始分析结果:首先是《泰坦尼克号》,通过观察词云图,柱状图,以及饼状图后发现,大部分用户对于这部电影的评价很高,关键字也都是爱情,感人,生死,人性之类,可以看出这部电影对于人性和爱情有着一个比较深度的刻画,将爱情和生死展现的淋漓尽致,深深打动了观众的心,这也是这部电影成为经典的原因。接着就是《星际穿越》,这部电影讲述了一群宇航员去太空寻找新的人类居住地,途中发生了很多奇异的事情,分析影评后发现,其关键字大多是穿越,黑洞,三维空间等等这些科幻的感觉,用户对这部电影也给予了很高的评价,展示了奇幻的感觉。以下对比了两部电影的分析界面,如图5-5所示:图5-5对比分析通过简单的分析发现,《泰坦尼克号》的5星好评率更高,大多数用户对于爱情片更感兴趣。这里通过一个简单的情感分析,对比之后发现,用户还是对《泰坦尼克号》更加青睐,如图5-6图5-7所示:图5-6泰坦尼克号图5-7星际穿越5.3漏洞错误及修改在本次设计中,存在着一个错误:当进行评分饼状图的分析时,发现对于用户所评价的1分这个数据,无法统计和显示出来,一直都是显示为0%,刚开始以为是没有用户评分为1分,之后通过多次爬取并统计数据,发现这应该是一个错误。如图5-8所示:图5-8错误情况展示然后就去网上找关于这一类型错误的资料学习,最后解决了这一问题,因为是要统计1-5分这一区间的信息,但是其对应地址为0-4,所以这里将代码中修改了一下。如图5-9图5-10图5-11所示:图5-9错误代码图

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论