精通Python爬虫-01-不断前行的蜘蛛

爬虫的定义

爬虫就是通过模拟人类使用浏览器来访问网页的过程,通过一个起始URL地址不断的从请求到的HTML中寻找新的URL地址,如此循环下去,直到我们的目的达成。

什么是URL和HTML

URL

URL(Uniform Resource Locator)又叫统一资源定位符。通俗的讲,每一个URL都代表一个资源,而这个资源是存储在不同的计算机上,我们使用固定的协议,主机名,端口号,对应的路径以及文件名这样的格式。就可以通过浏览器来访问到存放在某一个主机上面的资源。

如:http://www.imooc.com:80/static/img/index/logo-newyear.gif 这就是一个URL地址,它所代表的的含义就是,使用http协议来访问www.imooc.com这个主机,和这个主机的80端口进行通信,找到static目录下的img目录下的index目录下的logo-newyear.gif资源。这个URL就代表了唯一的一个资源,无论是我还是你来访问,请求到的都是这一个资源。所以叫做,统一资源定位符。

HTML

HTML(HyperText Markup Language)又叫做超文本标记语言。文本我们都知道,我们最简单的TXT文档,就是一个文本,那么什么是超文本呢?我们可不可以理解为是一种比文本更加强大的东西?因为我们的TXT文档连最基本的针对某个字符进行加粗或者插入一个图片都做不到,所以我们需要一种更加强大的文本,那就是超文本。

所以HTML不仅仅可以包含文字,还可以包含程序,视频,音频,图片,链接,等等。它具有一种独特的书写格式,简单易学,并且体积较小,容易阅读,可以在互联网进行低带宽传输,并且能够很好的被其他程序解析,比如我们的浏览器。有些人看到前面可能会问:Word文档也可以包含视频音乐和图片啊,为什么Word不叫超文本呢?这个问题非常好,因为Word文档设计本身就不是让它在互联网进行传输的,我们都知道互联网传输什么最重要?那就是速度,Word文档不仅体积大,而且它的编码还不是采用的字符的编码形式,而是采用微软特有的形式进行编码,我们需要依靠特定的软件,比如Office才能编辑这种文档。而不像我们的HTML,他可以使用最原始的文本文档进行编辑,它在传输的时候就是最简单的字符,可以被任何其他程序轻易的读取。

当我们在使用浏览器访问一个HTML文件的时候,服务器就会把这个文件中包含的字符传输给我们的浏览器,浏览器获取到这个文件以后会把里面包含的视频,图片,样式,音频等等统统请求过来,然后根据里面当初大家规定好的代码标签来将页面漂亮的显示出来,而不是一个原始的代码文本。

如下图,这是慕课网首页经过浏览器渲染后的样子:

bigsec

我们再来看一下没有经过渲染的样子:

bigsec

是不是非常的难看,虽然有前端基础的同学能够看出他们代表的意思,但是你能够在脑海中想象出这么漂亮的一个页面吗?恐怕非常困难吧,而我们的浏览器并没有修改任何的东西,只是把当初定义HTML语言时候规定的样式给展现了出来。那么也就是说,这其实是浏览器搞的鬼,实际上服务器返回的还是上面的没有渲染过的代码。

那么既然浏览器是一个程序,它能够发送请求来获取一个URL地址对应的资源,我们能不能够也写一个类似的程序,但是我们不需要去渲染漂亮的页面,我们只需要从HTML代码中获取一些我们感兴趣的东西就可以了。于是,爬虫技术应运而生。

不断前行的蜘蛛

任何事情它一开始出现的目的,一定是为了解决某些问题的,爬虫也不例外。在互联网开始之初,人们建立了许多的网站,我们都知道服务器其实就是一个计算机而已,它也拥有IP地址。我们访问一台服务器的时候,其实访问的就是它的IP地址,但是IP地址并不好记啊,所以人们发明了域名,域名就很好记了。比如说:www.imooc.com,www.baidu.com,www.qq.com。但是随之而来的问题就出现了,这么多的网站,我不可能每个域名都记住啊,你让我记住十几个,甚至是天赋过人,记住几百个,但是其他更多的域名怎么办呢。如果我想找到一个音乐网站,我该怎么找呢。

这时,就有人想,能不能做一个程序,我让它把世界上所有的网站都找到,然后大家都在自己网站的HTML代码里加入一个特殊的标记,如果你这个网站主要是音乐,你就在里面写上音乐还有其他跟音乐相关的关键词,我的程序就通过分析你们这些页面里包含的东西还有你们的域名存储在我的服务器里,而我来建一个网站。这个网站什么都没有,只有一个搜索框,别人想找一个音乐网站就在框里输入音乐两个字,点搜索我就把你的域名给别人显示出来,这样所有人都只用记住我的网站域名就可以了,其他的根本不用记。

到这里,可能很多人都明白了,这就是我们的搜索引擎。没错,爬虫的最初目的竟然是为了解决人们记不住互联网上众多的域名而诞生的。但是随着大数据和人工智能时代的到来,数据显得越来越重要,谷歌,百度,腾讯,凭什么他们能够屹立在互联网行业的最巅峰?那就是因为他们掌握的数据量太恐怖了,百度谷歌每天通过人们搜索的关键词就可以判断出全世界的一个趋势,他们知道人们对什么感兴趣。包括腾讯,庞大的用户群体,空间,等等。通过人物之间的关系,以及各种动态就可以分析出某些群体他们感兴趣的产品。

21世纪什么最重要?产品。我们来看滴滴打车等软件就可以知道,一个好的产品可以让一个普通人身价过亿。那么如何做好一个产品,自然是庞大的数据分析。根据不完全统计,各大招聘网站中数据挖掘工程师的工资不断的飙升,并且稳居IT行业前列。并且在2016年出现了震惊世界的一件事,那就是国际围棋大师,李世石大战谷歌人工智能阿尔法狗,最终败给了阿尔法狗。

这件事再次让人们重新思考人工智能是否可行,但是无论怎样,人工智能技术绝对离不开庞大的数据量,那么这些数据如何获取,就完全依靠我们的爬虫程序。越来越多的人投身这个行业,越来越多的爬虫进入了这个庞大的互联网,它们目的明确,不断的顺着网络寻找下一个目标,像一个不知疲倦的蜘蛛,永远前行。

作者: 秋名山车神 链接:http://www.imooc.com/article/16020 来源:慕课网