数据
开始之前呢,先跟大家说一说数据。数据被称为是21世纪的“石油”,数据的重要程度可见一斑。一门新兴学科就是数据科学,一种新兴的职业就是数据科学家(一般是指一个团队,因为一个人是很难处理所有工作的,尤其是信息领域)。一个很有名的案例就是奥巴马竞选美国总统,他后面就有一个非常强大的数据科学家团队为他“出谋划策”。感兴趣的话大家可以去Google一下。其实大家平时也会感受到,利用数据带给我们的服务,比如抖音的智能推荐等等。
我们想要用数据为我们“服务”,第一步就是获取数据。据估计,到2025年我们全球每天将产生491EB的数据。至于EB这个单位到底有多大,看下面:
1GB (Gigabyte 吉字节 又称“千兆”)=1024MB
1TB (Trillionbyte 万亿字节 太字节)=1024GB
1PB(Petabyte 千万亿字节 拍字节)=1024TB
1EB(Exabyte 百亿亿字节 艾字节)=1024PB
至于我们耳熟能详的“大数据”,就是指拍字节(PB)以上的数据。有句话是这么说的,比你自己更了解你的是大数据。其实说到大数据,就不得不提大数据“茧法”,大数据虽然能够给我们提供更多的便利,但一定程度上它也限制了我们获取知识的宽度,像一个茧一样,把我们包裹在自己想要了解的地方,对于“茧”外的东西一概不知。
爬虫引入
获取数据有很多方式,可以直接在网站上检索,自己实验记录,去查统计年鉴等等非常多的方式(比如Google可以收集你的鼠标在网页上面的滑动轨迹作为数据)。像做实验这些是自己产生原始数据,可能还需要自己去整理。像统计年鉴这些是别人整理好的数据,数据就比较“整洁”,可以直接使用。我们今天讲的爬虫呢,其实也是一种网络检索,就是用一个“爬虫”来代替我们去检索。
从爬虫这个名字我们就可以想象到它就是通过编程实现的一只“小虫子”在整个互联网上爬来爬去。我们可以编写不同的小虫子,让它在网络上替我们搜集我们想要的资源。
比较官方的来说,网络爬虫(又被称为网页蜘蛛,网络机器人)是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。通用网络爬虫从互联网中搜集网页,采集信息,这些网页信息用于为搜索引擎建立索引从而提供支持,它决定着整个引擎系统的内容是否丰富,信息是否即时,因此其性能的优劣直接影响着搜索引擎的效果。嗯,大家知道爬虫是为了获取数据,然后最大的应用就是我们的搜索引擎就OK了。
URL
大家应该知道互联网是有“记忆”的。所谓记忆就可以理解为互联网海量的数据。万维网www (World Wide Web)并非某种特殊的计算机网络。万维网是一个大规模的、联机式的信息储藏所,英文简称为Web。万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点(也就是所谓的“链接到另一个站点”),从而主动地按需获取丰富的信息。互联网的各种数据就存储在互联网上的数据分布在世界各地的Web服务器上。
这样我们虽然知道了信息存在于Web服务器上,但是我们并不知道是哪台服务器,而且也不知道是那台服务器下哪个具体文件。所以这就需要同一资源定位符URL,这也就是网络上资源的地址编号,网络中的资源都有一个在全网内唯一的“地址”,通过这个地址我们就可以访问到想要的资源啦。举个栗子,我们在B站看一个视频,在浏览器的地址栏会显示一串英文字符:
https://www.bilibili.com/video/BV1Ci4y1c7Ld?t=39&p=2
这串字符就是我们观看视频的URL地址,视频就是我们访问的资源。我们先来解读一下这个地址。
- https 这个就很好理解,http协议,但上面的URL为什么后面是https呢,因为这是http的安全传输,s代表的是security。
www.bilibili.com 这就是我们看的这个视频所在的服务器了。www.bilibili.com也称为域名,它唯一标识整个网络中的一台或几台具体的服务器。(有人可能会问,既然一个计算机的“地址名”,为什么可能标识的是几台服务器呢。这是因为有的网站的访问量非常多,一台服务器可能处理不过来,所以这几台服务器都具有相同的域名)。提起域名就不得不提IP地址,IP地址是一串32位的二进制数,一个IP地址标识了网络中唯一一台主机。我们在网络中通信都是按照IP地址来查找地址。既然如此那为什么还要域名呢?因为IP地址难以记忆,所以才使用域名把计算机的地址表示成便于人们记忆的字符。我们在浏览网址的时候,只需要输入容易记忆的域名,然后通过计算机上的DNS系统,自动域名转换成IP地址就可以了,这些都是计算机自动完成的,我们用户是感觉不到的。一般域名和IP地址是一一对应的。但需要指出的是,上面说的一个域名对应几台服务器的情况下,一个域名就会对应好几个IP地址。因为一台服务器至少有一个IP地址。至于我们访问服务器时用的是哪个IP地址,就看DNS给我解析出什么就行啦,这些对我们用户都是透明的。
/video/BV1Ci4y1c7Ld 这串字符呢就是在这台服务器上的文件路径,也就是我们看的这个视频在哪个文件夹下
问号后面的t=39&p=2就是我们传递的参数,这个就不详细说了,但可以举个栗子,t=39就可以代表这个视频是这个UP主的第39个视频,后面的p=2就是这个视频可能是分了好几集,这个是第二集。也比如我们浏览小说,网址上也可能会有c=50,代表第五十章。这个参数是非常重要的,因为我们在爬虫是需要以这个参数为种子,爬取更多的信息。这个在后面会有详细的讲解。
HTML
现在我们也知道数据存放在哪里了,下面就需要了解一下数据的表示形式,万维网内的数据都是以超文本标记语言(Hyper Text Markup Language)的形式组织的。超文本,顾名思义比文本更加高级。网络中的资源有文本,图像,视频音频等等,都是用超文本展示。HTML就是超文本标记语言了,但它并不是一种编程语言!!!HTML现在流行的版本是5,而且非常的简单,入门快。
HTML定义了许多用于排版的命令,即“标签”(tag)。例如,<>表示后面开始用斜体字排版,而>则表示斜体字排版到此结束。HTML把各种标签嵌入到万维网的页面中,这样就构成了所谓的 HTML文档。HTML文档是一种可以用任何文本编辑器(例如,Windows 的记事本Notepad)创建的ASCII码文件。但应注意,仅当HTML文档是以.html或.htm为后缀时,浏览器才对这样的HTML文档的各种标签进行解释。如果HTML文档改为以.txt为其后缀,则HTML解释程序就不对标签进行解释,而浏览器只能看见原来的文本文件。
举一个非常简单的例子,请看图,下面就是一个HTML编写的页面
直接点击保存为以.html为后缀的文件,双击这个文件,浏览器就会自动解析这个文件。
可以看到页面中的文字段落,图片,以及链接等。当然这样的页面是非常不美观的,可以学习一下CSS和Javascript对网页进行渲染,这里就不再多说。
最后,就是要如何访问资源了撒。访问资源就是我们发出访问请求,服务器给出响应,把我们请求的文件或页面发给我们,就是这么简单易懂。当然这里面会涉及很多东西,比如POST请求和GET请求以及HTTP协议等等一大堆,感兴趣的小伙伴可以去自学一下哦~。
到此我们网络爬虫的基础知识就讲的差不多了,一些扩展知识大家可以去多多了解哦。