Python网络爬虫及数据可视化.doc
《Python网络爬虫及数据可视化.doc》由会员分享,可在线阅读,更多相关《Python网络爬虫及数据可视化.doc(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Python网络爬虫及数据可视化学 院:专 业:姓 名:指导老师:信息学院通信工程陈悦俊学 号:职 称:160108104497石碧莹讲师中国珠海二二年五月北京理工大学珠海学院2020届本科生毕业设计诚信承诺书本人郑重承诺:本人承诺呈交的毕业设计Python网络爬虫及数据可视化是在指导教师的指导下,独立开展研究取得的成果,文中引用他人的观点和材料,均在文后按顺序列出其参考文献,设计使用的数据真实可靠。本人签名: 日期: 年 月 日Python网络爬虫及数据可视化摘 要随着4G的全面普及,以及5G基站建设开展,带来互联网相关产业的高速发展,电子数据的爆发式增长。对于互联网公司来说,海量用户带来的
2、巨量数据就是待挖掘的金矿,同时数据也是互联网公司的生命线。获取海量的数据如果通过人工一一进行获取,速度缓慢,耗费时间长,效率低下,对于此痛点,网络爬虫是最好的选择,通过计算机的协助,获取海量具有价值的数据。bilibili弹幕网站(以下简称B站)是近年来在年轻人中比较受欢迎的网站,用户趋向90后乃至00后,对于该网站的用户对象比较感兴趣,网站官方对爬虫也比较友好,因此选择该网站为爬取对象。本课题以Python为开发语言,借助requests库编写爬虫,MySQL为数据库,用于存储数据,在后续数据可视化中,还是使用Python进行分析,通过这个程序,可以实现高效获取数据,筛选数据,存储数据,分析
3、数据,数据可视化。关键词:网络爬虫;Python;bilibili弹幕网站;数据可视化Python Web Crawler And Data VisualizationAbstractWith the full popularity of 4G and the construction of 5G base stations, the rapid development of Internet-related industries has brought about explosive growth of electronic data. For Internet companies, the
4、 huge amount of data brought by massive users is the gold mine to be mined, and the data is also the lifeline of Internet companies. Obtaining huge amounts of data manually is slow, time-consuming, and inefficient. For this pain point, web crawlers are the best choice. With the assistance of a compu
5、ter, you can obtain massive amounts of valuable data. The bilibili barrage website(Referred to as B Station) is a popular website among young people in recent years. Users tend to be post-90s or even 00s. They are more interested in the user objects of the site and friendly to crawlers.This topic us
6、es Python as the development language, write crawlers with the request library, and MySQL as the database for storing data. In the subsequent data visualization, Python is used for analysis. Through this program, you can efficiently obtain data, filter data, and store data , Analyze data, data visua
7、lization.Keywords: web crawler; Python; bilibili barrage website; data visualization目 录1 绪论11.1 程序开发背景11.2 程序开发目标11.3 论文内容和结构布局12程序设计与实现22.1 程序描述22.2程序技术介绍22.2.1编程语言22.2.2开发工具22.2.2爬虫原理22.3程序开发及结构32.3.1开发思路32.3.2可行性分析42.3.3开发环境搭建42.3.4数据库搭建42.3.5主程序分析62.4程序调试193运行结果193.1 爬取数据成果193.2数据分析结果214总结23参考文献
8、24谢辞25附录261绪论 1.1程序开发背景 世界进入21世纪,来到我们如今的移动互联网时代,人们通过手机点外卖,通过网络购买世界各地的商品,生活如此便捷,得力于我们国家互联网产业的快速发展以及网络的普及。互联网用户越来越多,由此产生的数据量就越来越大,对于互联网公司来说,数据就是生命线。数据可以增强用户的体验,根据数据为用户更好的体验,同时提高公司的运营效率。对于互联网公司来说,海量用户带来的巨量数据就是待挖掘的金矿。在现在商业竞争如此激烈的情况下,对于企业来说,想要分析自己的数据还是很容易的,但是对于某数据感兴趣人群或者是竞争对手公司想要研究对方公司的数据,可能就需要采取一些方法和手段了
9、,如果手动获取采集数据,效率低下,而且互联网时代,数据产生和数据量可谓是瞬息万变,效率低下不仅影响采集数据的时效性和质量,还成本高昂。在有如此的需求下,网络爬虫应运而生,网络爬虫可以通过特定的规则,高效采集筛选网页的数据,并存储数据。这对于需要快速获取数据的人群来说,是最好的选择。关于网络爬虫,近年来也是对其争议不断,爬虫带来了不少问题,爬虫如果爬取速度过快,会对web服务器造成很大的开销,有可能造成服务器的宕机,爬虫制造和使用者也可能会因此付出相关法律责任,另外爬取对方企业数据进行牟取利益也会带来法律风险,因此爬虫开发和使用需要对这方面相当注意。同时企业的反爬手段也不断更新升级,有些网站一旦
10、发现爬虫就会对访问者的IP封禁,或者限制其访问次数,甚至返回假数据。也有一些网站允许爬虫爬取数据,但会出台相应的Robots协议,告知爬虫使用者哪些数据是允许爬取的,如果Robots协议是空的,则默认可以爬取任意数据,Robots协议只是对爬虫使用者的建议,没有约束性,爬虫使用者仍然可以不遵守。总之现在想要爬取网站的数据正变得越来越难。1.2程序开发目标 此次设计目标,爬虫爬取数据不要求很大,但数据量需要具有一定的代表性,爬取速度计划达到400条/1分钟,爬取时间超过6-7小时,同时可以关联数据库,爬取数据后存储数据库,后续可以在数据库中快速查询提取数据,同时另外建立程序,可以对数据库中数据进
11、行可视化操作,通过绘制一些数据图表,使数据具有更直观的展现。1.2论文内容和结构布局第一章 绪 论:主要介绍程序的发展开发背景,以及开发目的第二章 程序设计与实现:介绍程序的相关技术以及程序的开发过程和步骤;第三章 运行结果:展现程序的运行结果,以及得到数据的分析结果;第四章 总结:总结对程序的学习和开发的一些想法和感悟;2程序设计与实现2.1程序描述本设计程序由三个部分组成,爬虫程序部分为程序1,可以根据B站账号从最小开始,循环爬取网页内用户的账号,昵称,性别,粉丝,关注量,会员信息,等级,上传作品数量,并将其存入数据库,程序2完成读取数据进行数据的快速查询和提取工作,程序3进行数据可视化的
12、工作。2.2程序技术介绍2.2.1编程语言本次设计通过Python3.7编写网络爬虫,事实上用C,Java,C+都可以编写出爬虫,但是与Python相比较而言,语法更加简洁易用,并且提供了大量功能类库,可以直接调用,编写效率更高,同时也方便后续进行数据分析,因此是作为爬虫编写语言的首选。2.2.2开发工具开发语言:Python3.7。开发平台:PyCharm社区版。PyCharm专注于Python开发,工具免费且不臃肿,同时拥有智能填充,还有高效的提示功能,这些功能对于Python新手来说非常友好。数据库:MySQL。需要爬取的用户数据,一条用户数据在80B的样子,所以实际上一百万的用户数据实
13、不超过100MB,数据库方面选择使用命令行的MySQL Community Server 8.0.19版本,MySQL是一种关系型数据库,拥有开源,执行速度快,支持多种编程语言的优点,在存储爬虫数据性能方面绝对够用。2.2.3爬虫原理爬虫的运作是基于HTTP协议的,要了解爬虫的原理,首先需要了解HTTP协议。HTTP协议又叫超文本传输协议,是互联网上应用最为广泛的一种网络协议,协议设计目的是为了提供发送和接收页面内容的方法,所有的网站都遵循这个标准。HTTP协议是面向连接的,一般的HTTP访问过程为:客户端端于服务器建立连接,客户端端向服务器提出请求,服务器接收请求并根据请求返回相应的数据,客
14、户于服务器断开连接。爬虫的原理简单来说是自动向服务器发送请求,并从返回给终端的信息中筛选并存储信息。现如今网页内容都是由HTML,JavaScript,CSS,XML,XHR以及JSON文件组成,其中HTML是网页的骨架,JS,CSS完成网站的色彩和交互功能。本质上爬虫和浏览器的原理是相似的,用户获取信息的过程其实是,客户端将自己的信息通过浏览器是向web服务器提交请求Request,服务器接收请求,并分析请求信息,返回一些JS,CSS,HTML等数据到客户端浏览器,浏览器通过解析数据,最后在用户前展现网页中呈现不同的内容。 而基于Requests库的Python爬虫,模拟浏览器,将自己的信息
15、通过浏览器是向web服务器发送Request信息,如果web服务器正常响应,就会返回Response,包含JS,CSS,HTML或者是JSON,图片,视频。而爬虫在获取数据后根据编写一定的规则,筛选出其中有价值的数据,并进行存储。爬虫原理图如下:图2.1 爬虫原理图2.3程序开发及结构2.3.1开发思路编写程序思路上,根据Requests库官方文档编写爬虫,代码方面尽量倾向从简单,轻量化方面思考,方便后续进行修改和维护。总体结构分为三个部分,将程序分为程序1,程序2和程序3。程序1完成爬虫的工作,循环爬取一百万的用户数据,完成储存后反馈完成信息并记录完成时间点,程序2完成数据分析,程序3完成数
16、据可视化的工作。图2.2 程序开发思路2.3.2可行性分析程序使用Requests库进行开发爬虫,Python简单易学,方便快速入门上手,可以调用多种工具库,MySQL作为数据库,数据库语言上手简单,难度不高,开发环境基于Windows10进行搭建开发。开发工具PyCharm是免费的,完成项目只需要花费学习时间,项目技术上可行。 2.3.3开发环境搭建必备安装:Python3.7,PyCharm存储空间配置,环境变量配置新建程序项目2.3.4数据库搭建下载并解压MySQL Community Server 8.0.19,在命令提示符中进入MySQL根目录bin,输入mysqld install
17、进行安装,以管理员权限打开命令提示符,并输入mysqld -initialize console进行激活数据库,设置环境变量,方便下次进入数据库(没有配置环境变量,每次进入数据库都需要先进入MySQL根目录)。命令提示符输入net start mysql,开启数据库进程(net stop mysql关闭数据库)图2.3 MySQL启动过程命令提示符输入mysql -u root -p,进入数据库,其中root是用户名,p后面填写密码,这边设计密码为空图2.4进入MySQL操作命令行进入数据库后,输入create database test;,创建名为test的数据库。输入use test,选中
18、使用test数据库,进入test数据库后再输入:create table user(mid bigint(20) NOT NULL,name VARCHAR(200) NOT NULL,sex VARCHAR(200) NOT NULL,fans bigint(20) NOT NULL,attention bigint(20) NOT NULL,level bigint(20) NOT NULL,vipType bigint(20) NOT NULL,upload bigint(20) NOT NULL,PRIMARY KEY (mid) )ENGINE=InnoDB DEFAULT CHAR
19、SET=utf8;创建名为users的数据表,包含账号,昵称,性别,粉丝数量,关注数量,等级和会员身份,上传视频数量的键位,昵称、性别为字符串类型varchar,账号、粉丝数量、关注数量、等级和会员身份为整型bigint,存储数字。其中主键是账号(mid),因为要建立关系模型,首先需要确定主键,在关系表中,有个重要的约束,任意两条记录不重复。不重复不是指两条记录不完全相同,而是指可以通过某个字段区分出不同的记录,这个字段被称为主键。建立主键是数据表内的唯一标识,是不可更改的,账号在B站中也是作为每一为用户独有的信息,不会出现两位或以上的用户账号是一样的情况,因此选定账号是主键,设置非空not
20、null,如果键位没有存储数据出现null,则会报错,设置VARCHAR(200)则表示键位无论汉字(每个汉字3字节),字母还是数字都可以存储200个,utf8为数据表的编码格式。至此数据库搭建完成,后续爬取的数据将存储在test数据库中的users数据表中。2.3.5主程序分析程序1:程序1主要完成爬虫的工作,根据HTTP协议,首先需要构造出返回目标网站url的一个函数,需要了解爬取的相关信息。使用谷歌浏览器进入B站图2.5 B站界面图进入B站后,需要进入某个用户(包含up主)的介绍页面,随机点击主页上的一个视频。图2.6点击进入任意视频进入视频播放页面后点击up主头像,进入up主介绍页面这
21、时可以找到我们需要的数据,包含用户的各种信息,包含昵称,关注,粉丝,投稿,会员信息,网站网址是图2.7需要爬取的页面相关信息这个就是我们需要爬取的目标网站了。之后我们停留这个页面,按键盘F12打开开发者工具(这时打开开发者工具是没有内容的,需要刷新页面,重新进入网站),刷新网页重新进入网站。图2.8进入浏览器的开发者工具开发者工具有Elements,console,Sources,Network,Performance,Memory,Application,Security,Audits。这里只需要用到Network图2.9进入开发者工具的Headers图2.10进入开发者工具的Respons
22、e这时我们点击开发者工具内的Network,点击XHR,XHR全称是XMLHttpRequest,用于客户端与服务器交互数据,在位于开发者工具右边的显示为请求文件的具体说明,分为五个模块,分别为Headers,Preview,Response,Cookies,Timing。下一步,需要找到我们需要爬取的信息,点击Response,然后遍历左侧的NAME资源列表,不难找到info中服务器返回Response中有我们需要的信息,包含账号,昵称,性别,粉丝数量,关注数量,等级和会员身份等信息。图2.11 General信息最后需要找到info的资源的请求URL,进入Headers面板,Headers
23、面板中分为General,Request Headers,Response Headers,Query String Parameters。在General中的Request URL就是资源的请求URL。一样通过打开不同用户的网页进入开发者工具可以了解到资源的请求URL中mid后面数字就是用户账号。开始编写获取资源的请求URL的函数,结果如下:图2.12 bilibili_url函数定义名为bilibili_url的函数,url复制粘贴之前获得的资源的请求URL,将mid改为mid1,数据类型为整型, mid1的值会在后面进行定义。函数作用为返回url的值。这个函数会在后续函数中调用根据HTT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 网络 爬虫 数据 可视化
限制150内