互联网是由一个个站点和网络设备组成的大网,我们通过浏览器访问站点,站点把HTML、JS、CSS代码返回给浏览器,这些代码经过浏览器解析、渲染,将丰富多彩的网页呈现我们眼前。
如果我们把互联网比作一张大的蜘蛛网,数据便是存放于蜘蛛网的各个节点,而爬虫就是一只小蜘蛛,沿着网络抓取自己的猎物(数据)。爬虫指的是:向网站发起请求,获取资源后分析并提取有用数据的程序。
如今,人类社会已经进入了大数据时代,如何高效的获取数据,已经成了各个互联网公司的技术研发重点,掌握爬虫技术已经成为了大数据公司技术人员不可或缺的一项技能。
开发爬虫使用的语言,一般有C++、Java或者Python等,这些都是面向对象的编程语言。其中C++和Java都是强类型语言,而Python是一种弱类型语言。那么这三类语言都是有什么优缺点呢?请看下面描述:
1)JAVA
Java的语法比较规则,采用严格的面向对象编程方法,同时有很多大型的开发框架,比较适合企业级应用。Java的学习曲线较长,不仅要学习语言相关的特性,还要面向对象的软件构造方法,在此之后要学习一些框架的使用方法。
(1)用途:AndroidIOS应用开发,视频游戏开发,桌面GUIs(即图形用户页面),软件开发,架构等。
(2)优势:面向对象开源、跨平台、市场需求旺盛;Android开发的基石,是Web开发的主流语言;
(3)缺点:占用大量的内存,启动时间较长,不直接支持硬件级别的处理
2)Python
python是动态形的灵活的解释性语言,从软件开发到Web开发,Python都有在被使用。
因为它是解释性脚本语言,适合轻量级开发。Python是比较好学的语言。
(1)用途:爬虫,Web开发,视频游戏开发,桌面GUIs(即图形用户页面),软件开发,架构等。
(2)优势:动态解释型、拥有强大的开源类库、开发效率高、开源,灵活,入门低易上手
(3)缺点:运行速度低于编译型语言,在移动计算领域乏力
3)C++
C++更接近于底层,方便直接操作内存。C++不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。C++运行效率较高,同时能够比较容易地建立大型软件,适合对效率要求高的软件。C++的内容非常复杂,同时语言经过了几十年的演化,所以学习起来难度较大,开发效率较低。
1)用途:机器学习中的神经网络、大型游戏编程、后台服务、桌面软件等
2)优势:运行效率高、安全、面向对象、简洁、可重用性好等
3)缺点:没有垃圾回收机制,可能引起内存设漏;学习难度大,开发效率相对较低;
通过在GitHub上搜索”爬虫”,我们可以发现,目前市面上的开源爬虫项目,Python占百分八十的份额。
而且目前市面上,具有两年以上Python爬虫经验的工程师,其工资普遍高于Java和C++爬虫工程师。
所以,Python才是开发爬虫不二的选择。那么一个初学者掌握哪些知识,就可以使用Python开发爬虫呢?
1.网络
urllib-网络库(stdlib)。
requests-网络库。
grab–网络库(基于pycurl)。
pycurl–网络库(绑定libcurl)。
urllib3–PythonHTTP库,安全连接池、支持文件post、可用性高。