1.1 Selenium的优点
本书侧重讲解基于Selenium开源程序的网络爬虫方面的自动化技术。很多人听过Selenium这个名词,却没有真正去了解过它。经常有人问:“如何理解和看待Selenium项目?”对于该问题,Selenium官方有一个很经典的回答:“自动化操作的浏览器,就是这样……做你想要做的事情,一切取决于你。”
Selenium项目最早是为测试浏览器、网页而诞生的。在大数据时代,Selenium广泛应用于网络爬虫。需要注意的是,Selenium项目并不是单个特定的软件,而是由多个工具组成,每个工具具有特定的功能。
Selenium WebDriver是Selenium项目基于浏览器的一部分,也是我们主要使用的一部分。它的灵活性很强,几乎支持所有主流的浏览器(甚至包括一些很小众的浏览器),并且可以完美地在支持这些浏览器的操作系统上运行。换句话说,当使用Selenium的时候,你完全不必担心兼容性问题,可以放心地进行代码移植。
但不要轻易更换你的Selenium WebDriver调用的浏览器。Selenium WebDriver对浏览器的操作是通过浏览器原生的API来实现的。这样一来,虽然速度和稳定性大大提高,但也带来了一些副作用。因不同浏览器Web元素的实现和呈现方法不同,Selenium WebDriver也要针对不同的浏览器而提供不同的实现方法。
SeleniumWebDriver支持的浏览器主要包括:
●Firefox浏览器;
●Chrome浏览器;
●Opera浏览器;
●Edge浏览器;
●IE浏览器。
SeleniumWebDriver支持的操作系统主要包括:
●Windows;
●Linux;
●macOS(含iOS);
●Android。
除了上面列出的浏览器和操作系统外,Selenium还支持多种编程语言(如Java、R、Python、PHP 、Ruby、Perl、Haskell、Objective-C、C#等)。在这个信息泛滥的互联网时代,如果要选择Web方面的自动化工具,我会将Selenium作为首选(作为一个支持多种浏览器、多种操作系统、多种编程语言的工具,恐怕没有什么比它更合适了)。
使用Selenium项目的自动化技术具有以下好处。
●可靠性。
企业的日常工作常常包含一些完全必要的重复性工作,传统的企业大多采用人力来处理这些工作,这就容易导致一些严重的错误。比如,误删数据库、系统宕机等。无论在经济上还是在声誉上,这样的错误对于企业来说都是一种毁灭性的打击。当把人力排除时,就可以避免绝大多数人为错误导致的重大损失。
●性能优化。
在日常工作中,技术人员经常需要提高工作效率,但以传统方式来提高工作效率是很难的。当应用了自动化技术之后,我们就可以通过更加高效地利用系统来更迅速地执行任务,加快工作流程,处理更加庞大的工作负载。
●解放生产力。
没有一家企业不想降低成本。从某个方面来讲,要提高利润,就需要招聘更多的员工,而招聘更多的员工就意味着更高的人力成本。人力成本高企的问题可以通过自动化技术解决。自动化的工作没有人力成本,这就意味着通过编写自动化代码,可以将工作人员从大部分烦琐的工作中解放出来。正如一句公认的论断所说——“为了创造物质财富而投入生产活动中的一切要素通称为资源,包括人力资源、物力资源、财力资源、信息资源、时间资源等,其中人力资源是一切资源中最宝贵的资源,是第一资源”。
作为一个跨语言的项目,很多编程语言都可以使用Selenium,如Java。本书采用Python来介绍Selenium的用法。为什么采用Python呢?Python以其快捷著称,比如,要解决数独问题,使用C语言需要写300~500行代码,使用Java需要写100~200行代码,而使用Python只需要不到100行代码。从长远的角度来说,作为目前蓬勃发展的一门计算机语言,Python具有美好的前景,它在科学与数字计算、网络编程和系统网络运维方面的应用非常广泛。Selenium自动化测试与这些方面具有密不可分的关系,因此基于Python来学习Selenium更加有利于读者未来的发展。