基于python的网络爬虫设计.doc





《基于python的网络爬虫设计.doc》由会员分享,可在线阅读,更多相关《基于python的网络爬虫设计.doc(49页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、摘要哔哩哔哩视频弹幕网,从一开始的无名小站发展到现在月活跃用户超一亿的巨大规模,不仅引起了行业浪潮,也吸引越来越多人选择成为UP主(Uploader)即视频上传者。Bilibili网为UP主提供了平台和各种功能支持,但还是无法面面俱到。本软件设计旨在提供便捷的刚需功能,为新兴UP主提供功能支持。本毕业设计采用标准的软件开发流程,包含了需求分析、整体设计、模块实现、编码、测试、打包软件等等步骤。该软件算法和轮廓基于python设计,调用了包含requests、random、pickle等等成熟的集成库环境。软件主要针对用户需求颇多的两个主要分支:评论和抽奖进行设计实现。评论区功能包括爬取完整的表
2、单数据,解决复数层评论的获取和存储,实现快速浏览、存储和多种查找功能;抽奖区功能包括实现爬取多种抽奖材料,根据需求分析样本并最终使用随机算法进行随机数获取,实现抽奖功能。关键词:爬虫 bilibili 用户 pythonAbstractBilibili has started as an unfamous acg web at the beginning and now have a huge scale of over 100 million active users each mouth, which is causing a wave and attracted more and mor
3、e people to choose to become a UPloader.Bilibili provides Uploaders sport and various functions for the users, but it still cannot cover everything. This software is designed to provide convenient and needed functions to users. This graduation design uses a standard software development process, inc
4、luding requirements analysis, overall design, module implementation, coding, testing, packaging and other steps. The software algorithm and outline are designed based on python, and call the mature integrated library environment including requests, random, pickle and so on. The software is mainly de
5、signed and implemented to slove two main functions with many user needs: reviews and lotteries.The review function incuding crawling complete form datas, solving the acquisition and storage of multiple layers of reviews, realizing quick browsing, storage and multiple search functions and so on. The
6、lottery function contains crawling multiple datas to analysis and finally finish the random choise.Key words:Web Crawler Bilibili User Python目 录1 绪论11.1 项目背景与意义11.2 国内外研究情况11.3 文献综述12 网络爬虫介绍32.1 网络爬虫原理32.2 网络爬虫框架32.3 网络爬虫工作流程32.3.1 向服务器发起请求32.3.2 获取响应内容42.3.3 解析内容42.3.4 储存分析43 软件整体设计53.1 程序需求分析53.2
7、系统框架构造54 爬虫程序具体设计流程124.1 环境搭载124.2 模块功能实现154.2.1 实现评论获取与查找154.2.2 实现bv号获取及视频信息总览214.2.3 抽奖实现与粉丝流动部分224.2.4 mid的获取和ab互转功能实现254.2.5 程序框架实现274.2.6 逻辑改善及bug处理294.2.7 编写完成打包程序325 软件演示与测试345.1 测试环境345.2 步骤演示与测试结果346 总结426.1 项目开发总结426.2 不足与展望42参考文献43致谢44广东东软学院本科毕业设计(论文)451 绪论1.1 项目背景与意义近年来随着网络的飞速发展和建设,人们获取
8、信息的途径也从主流的报纸电视,过渡到手机电脑等网络平台。各类别的文化借此逐渐渗透到人们周围的生活中。作为国内起步最早的一批二次元视频网站之一,哔哩哔哩以其独有的弹幕文化逐步发展成现在国内流量第一的视频弹幕网站。哔哩哔哩视频内容的高跨度、高质量、高时效力也为其吸引了巨大的现有用户和潜在用户,2019年5月起月活跃用户数突破1亿,并且还在呈现增长趋势。作为一个互联网公司,哔哩哔哩是成功的。但其拥有的庞大用户数量,注定决定了哔哩哔哩无法做到面面俱到,满足所有用户的需求。哔哩哔哩主要的运作方式为网页,依赖数据的建设和支持为用户提供了很棒的功能。 本课题的主要目的是设计面向用户的网络爬虫程序,提供用户一
9、些官方并未提供的功能,比如类别抽奖和数据获取。1.2 国内外研究情况近年来,国内外程序研究人员提出了许多种类的网络爬虫结构与算法,亦应用在不同的行业与领域,大大提高信息利用率和工作效率。许多大型软件公司也积极地根据自身行业特点与需求,开发出许多类别的网络爬虫系统,比如google,微软的bingbot和yahoo的slirp等等。本课题研究的方向是提供特定网站哔哩哔哩的额外功能实现,在经过网络查询后发现,国内目前并未有人系统地开发过相应软件,可以说是较为新颖的研究课题。并且考虑到哔哩哔哩用户基数大,前景可期,用户需求只会越来越多,本课题的研究实现也具有了现实意义。具备研究价值。在实现预期目标的
10、同时,将一同研究作为功能性的爬虫程序,在面对复杂、多样性的环境下可能出现的问题,合理借鉴前人研究经验,解决和优化。1.3 文献综述对于网络爬虫的研究从上世纪九十年代就已经开始,目前爬虫技术已经趋见成熟,功能描述向高概括性高度模块化靠拢。网络爬虫是搜索引擎的重要组成部分。网络上比较著名的开源爬虫有Nutch,Larbin,Heritrix等等。网络爬虫最重要的是网页搜索策略(广度优先和最佳度优先)和网页分析策略(基于网络拓扑的分析算法和基于网页内容的网页分析算法)。国内外流行的爬虫技术相当多,各个编程语言都有涉及。基于Python、C+、C、java等等。就原理而言,爬虫组件都是差不多的。而无头
11、浏览器是最能够说明爬虫特性的部分,无需提供多余的身份信息即可向服务器请求数据,以适用于自动化测试等领域。此外主流的浏览器如Chrome、Firefox、Safari等都提供了相应的抓取支持,selenium作为一个集成工具,包含了上述的所有组件,以WebDriver的形式,直接在浏览器进行测试,适配各种爬虫组件,方便使用者进行操作。2 网络爬虫介绍2.1 网络爬虫原理网络爬虫行为上就是模拟真人进行流程操作,获取网页返回的数据进行储存分析,等同于浏览器对网页的访问。因这种技术实现很像蜘蛛在蛛网上的往返爬行,也被生动地取名为爬虫。其实质就是一个请求网站并储存数据的自动化程序。2.2 网络爬虫框架下
12、图为一个通用的网络爬虫框架。通过调用URL在队列中进行管理,实现数据获取和保存。已下载网页库种子URL待抓取URL已抓取URL读取解析下载放进队列图2.1网络爬虫框架图2.3 网络爬虫工作流程2.3.1 向服务器发起请求爬虫程序通过request向目标网站的服务器发起请求,服务器会根据request内包含的请求作出处理,返回浏览器结果,这个过程即为response。而Request包含:1、请求方式常用的有GET和POST两种请求类型,另外还有HEAD、PUT、OPTIONS等。2、请求URLURL即(Uniform Resource Locator)统一资源定位符,网页、歌曲、视频、图片都可
13、以用一个唯一URL确定定位。3、请求头发送请求时可选的头部信息,取决于网页的请求要求,常见有Cookies、Host等。4、请求体发送请求时可选的额外数据,比如提交的表单、文本数据。2.3.2 获取响应内容服务器返回的response包含:1、响应状态即状态码,比如200为处理成功,404为未找到请求页面。2、响应头包含返回的内容格式、长度、类型等自然信息,以及服务器信息等。3、响应体即请求的资源内容,爬虫获取最主要的部分。2.3.3 解析内容根据获取的数据类型,比如HTML文档,JSON格式文本,图片,歌曲视频等等,作出相应处理。处理方式有直接处理,正则表达式,json解析,beautifu
14、lsoUP等等。2.3.4 储存分析以不同的格式:文本、json、jpg、mp3等等储存数据,作进一步处理分析。广东东软学院本科毕业设计(论文)3 软件整体设计3.1 程序需求分析哔哩哔哩网站作为新类别媒体平台的代表,在近几年以其内容的高跨度、高质量、高影响力吸引了巨大的现有用户和潜在用户,2019年5月起月活跃用户数突破1亿,并且还在呈现增长趋势。UP主,一个哔哩哔哩网站视频创作者的别称,为哔哩哔哩海量视频的产出增添了浓墨重彩的一笔。从起初的小受众网站一步步走向了多元化的媒体平台,这也吸引了越来越多的人成为UP主,加入到创作的浪潮中。本软件面向的对象,就是数量众多的中小规模的新UP主。许多U
15、P主在不断产出高质量视频后,也未必能成为粉丝过万、十万、百万的大UP主。抛去主观因素,通过网上调查等方式,我总结出了他们需要的一些非官方提供功能。一个全面的视频信息汇总功能,让用户看到全部视频的具体数据。一个高效的评论浏览功能,可以使他们了解观众的想法和建议,为新的内容创作蓄力。一个多样化的评论查找功能,有时需要找到特定信息,比如歌名,网站等等,或者查看长度较长的评论,查找功能就能很好地解决问题。这个功能也不局限于UP主,是所有用户都能使用的功能。一个完善的抽奖功能。哔哩哔哩为UP主提供了许多方便的功能,抽奖就是其中之一。但为了防止滥用引发的一系列问题,该功能只提供给粉丝过万或者有一定优质动态
16、、投稿积累的UP主,新人UP主要想在前期积累人气,抽奖功能是必不可少的。一个粉丝流动监视功能。新人UP主最关注的应该就是粉丝增长趋势了。这个功能无疑十分便捷,可以让他们看到一步步的积累。3.2 系统框架构造有了需求后,就可以着手设计软件,即面向对象编程。先根据用户需求,总结出需求框架,方便后续工作流程。下图为具体框架:图3.1需求总结图由需求可对程序进行初步构造,设计成由一个初始界面框内嵌一个多层循环且可随时打破的菜单函数构成的程序。设计目的是高效输出,简便操作,让任何人都可以轻易上手。大致逻辑确定后,开始设计系统主逻辑。下图为构造完毕的主体与子功能循环图: 图3.2主体与子功能循环图如图示,
17、即菜单程序里的功能模块在循环条件成立时不断循环,功能模块也随需求进入循环或者打破,并在用户给出打破条件后返回主体,参与主程序循环。接下来开始设计主菜单的逻辑流程。如下图:初始界面开始选择执行输出结果菜单返回功能列表退出程序是否是否图3.3主菜单的逻辑流程图图示阐述了系统的实现方法,即用户启动程序,选择进入主菜单,依实际需求选择相应功能,执行完毕后,可选择继续操作或者返回主界面,亦或是退出程序。到这里,系统实现的大致方向已经确定,下面开始设计各部分功能的逻辑流程。下图为绘制好的番号互转和评论功能实现逻辑:ab互转a2b获取b2a返回菜单退出查看评论用户+评论评论输入bv查看转换结果是是是否否否图
18、3.4番号互转和评论功能实现逻辑图如图中描绘,获取评论的操作逻辑为输入bv号,程序爬取后输出给用户查看,可继续循环查询功能或者返回主界面。而左半部分的av号与bv号互相转换流程,在后续软件实现会作进一步的补充说明。其逻辑和前部分类似,通过获取用户输入的视频编号(av/bv号)进行转换,输出结果。下图为评论查找的逻辑设计:评论查找关键词查找去重查找长评查找输入关键词结果查询返回菜单V码获取查询结果否否是是图3.5评论查找的逻辑设计图如图中的设计,在获取视频标识符后,对用户的要求分别实现,比如查询功能接收关键词字符,在比对库后输出结果,无论成功与否都可以重复操作或者跳出循环返回菜单。下图为抽奖功能
19、和粉丝流动功能的逻辑实现:抽奖 粉丝流动V码获取mid获取调用多日数据评论抽奖粉丝抽奖粉丝流动新粉抽奖旧粉抽奖结果新增变动取关变动数据储存返回菜单图3.6抽奖功能和粉丝流动功能逻辑图不同于前几个功能的相对独立,抽奖和粉丝流动这两个功能的分支会有共同的数据需求,在设计程序逻辑的时候应该注意,合理利用资源,实现一对多的函数调用,节省代码量,提高效率。即粉丝抽奖和粉丝流动部分是需要用户提供mid而不是bv号,但整体逻辑依旧和前部分的功能模块类似。下图为用户视频信息查询:获取mid用户视频信息浏览合法返回菜单排版打印各评论数视频总量各bv号各标题各播放量获取数据是否图3.7用户视频信息查询该功能提供用
20、户查看所有的视频相关信息,逻辑设计为较精简的交互模式,获取请求后输入mid,程序判断数据合法性后,将内容排版打印输出,相对于前几个功能的多分支,本功能逻辑简单易懂。绘制完成主程序和功能模块的逻辑设计后,可以开始进行爬虫程序设计。4 爬虫程序具体设计流程4.1 环境搭载在有了需求和逻辑框架后,开始进入软件设计环节。首先是环境的搭载。本软件是基于python开发的爬虫程序,自然少不了python的安装和环境构建。第一步是安装python。进入官网下载地址www.python.org/downloads/windows,选择对应的32位或64位安装包进行下载,然后根据提示进行安装,需要注意安装路径的
21、选择和应该勾选将python添加到PATH环境变量。安装完后打开命令提示符CMD输入python -V,若返回具体版本则为安装成功。如下图示:图4.1安装结果安装完python,可以选择直接开始代码编写,原生的python组件虽然好用,但有些简洁,缺少了诸多丰富的功能和调试交互。Python也有许多IDE可供选择,这里选择pycharm作为集成开发环境进行代码编写。PyCharm作为知名度和用户量都很高的python编译器,在界面、交互、调试、管理等都比原生要更精致和易用。进入官网打开pycharm新建project,进入project界面点击file-new-pythonfile创建新的py
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 python 网络 爬虫 设计

限制150内