1.2 Python能做什么
如果你想学Python,或者你刚开始学习Python,那么你可能会问:“我能用Python做什么?”这个问题不好回答,因为Python有很多用途。从事Python开发这么久,也了解了不少,笔者发现Python主要有以下五大应用:人工智能、网络爬虫、数据分析、Web开发和自动化运维等。
1.2.1 人工智能
人工智能是研究、开发用于模拟、延伸和扩展人类智能的理论、方法、技术和应用系统的一门新技术科学。对于想加入AI和大数据行业的开发者来说,学习Python是必要的。或者用另一种方式来说,如果你将来想在这个行业工作,你什么都不用想,首先闭上眼睛,学习Python。
当然,Python也并非没有它的问题和缺点。你可以也应该学习另一种语言,甚至几种语言来匹配Python,但是Python将坐稳数据分析和AI第一语言的位置,这一点毫无疑问。
笔者甚至认为,由于Python坐稳了这个位置,由于这个行业未来需要大批的从业者,更由于Python正在迅速成为全球大中小学编程入门课程的首选教学语言,这种开源动态脚本语言非常有机会在不久的将来成为第一种真正意义上的编程世界语。
1.2.2 网络爬虫
1.什么叫网络爬虫
网络爬虫又称网络蜘蛛,是指按照某种规则在网络上爬取所需内容的脚本程序。众所周知,每个网页通常包含其他网页的入口,网络爬虫则通过一个网址依次进入其他网址获取所需内容。
2.爬虫有什么用
爬虫可作为通用搜索引擎网页收集器。Google、Baidu做垂直搜索引擎,在线人类行为、在线社群演化、人类动力学、计量社会学、复杂网络、数据挖掘等领域的实证研究,都需要大量数据,网络爬虫是收集相关数据的利器。偷窥、hacking、发垃圾邮件……都要用到爬虫。爬虫是搜索引擎的第一步,也是最容易的一步。
3.用什么语言写爬虫
爬虫可用C、C++或一些脚本语言编写。
C、C++语言:高效率、快速,适合通用搜索引擎做全网爬取。但开发慢,写起来又“臭”又长,如天网搜索源代码。
脚本语言:Perl、Python、Java、Ruby。简单、易学,良好的文本处理能力方便网页内容的细致提取。但效率往往不高,适合对少量网站的聚焦爬取。
4.为什么最终选择Python
笔者用C#、Java写过爬虫,区别不大,原理就是利用好正则表达式,只不过是平台问题。后来了解到很多爬虫都是用Python写的,于是便一发不可收拾。Python优势很多,总结了以下两个要点。
(1)抓取网页本身的接口。与Java、C#、C++等其他静态编程语言相比,Python抓取Web文档的界面更简单;相比其他动态脚本语言,如Perl、Shell、Python的Urllib 2包提供了较为完整的访问网页文档的API。当然Ruby也是不错的选择。此外,抓取网页有时候需要模拟浏览器的行为,很多网站对于生硬的爬虫抓取都是封杀的。这时我们需要模拟User Agent的行为构造合适的请求,如模拟用户登录,模拟Session/Cookie的存储和设置。在Python里都有非常优秀的第三方包帮你搞定,如Requests、Mechanize。
(2)网页抓取后的处理。捕获的网页通常需要进行处理,如过滤HTML标签、提取文本等,Python的Beautiful Soap提供了简洁的文档处理能力,可以用很短的代码处理大部分文档。其实很多语言和工具都具有上面的功能,但是Python可以做到最快、最干净。
1.2.3 数据分析
一般我们用爬虫爬到大量的数据之后,需要处理数据用来分析,这是我们最终的目的。关于数据分析的库也是非常丰富的,各种图形分析图等都可以做出来,非常方便,其中诸如Seaborn这样的可视化库,能够仅仅使用一两行就对数据进行绘图,而利用Pandas、Numpy和Scipy,则可以简单地对大量数据进行筛选、回归等计算。而后续复杂计算中,对接机器学习相关算法,或者提供Web访问接口,或是实现远程调用接口,都非常简单。
提及数据分析,人们不免会想到Python数据分析的应用方向,Python也被看作数据分析的首选语言。Python作为一种面向对象、直译式计算机程序设计语言,具有简单、易学、免费开源、可移植性强、可扩展性强等特点。Python中拥有丰富而强大的库,而这些正是它在数据分析领域备受重视的关键。
1.2.4 Web开发
什么是Web开发呢?其实就是开发一个网站。那开发网站需要用到哪些知识呢?
1.Python基础
因为要用Python开发,所以Python一定要会,至少要掌握顺序结构、条件判断、循环、函数和类这些知识。
2.HTML、CSS的基础知识
因为要开发网站,网页都是用HTML和CSS写的,所以要学会这些知识。就算不会写前端,开发不出来特别漂亮的页面、网站,最起码要能看懂HTML标签。
3.数据库基础知识
开发一个网站的数据存在哪里?就是在数据库里,那最起码要了解数据库的增删改查,否则无法存取数据。
具有上面这些知识,就基本可以开发一家简单的小网站了,如果想开发比较大型的、业务逻辑比较复杂的网站,那就要用到其他知识了,如Redis、MQ等。
最近,Django和Flask等基于Python的Web框架在Web开发中非常流行。这些Web框架可以帮助开发者用Python编写服务器端代码(后端代码)。这是在开发者的服务器上运行的代码,而不是运行在用户设备和浏览器的代码(前端代码)。
1.2.5 自动化运维
随着信息时代的不断发展,IT运维已经成为IT服务内涵的重要组成部分。面对越来越复杂的业务和越来越多样化的用户需求,不断扩展的IT应用需要越来越合理的模式,以保证IT服务能够灵活、方便、安全、稳定,这种模式中的安全因素是IT运维(其他因素是更好的IT架构等)。从最初的几台服务器发展到一个庞大的数据中心,仅靠人工已经不能满足技术、业务、管理等方面的要求,那么标准化、自动化、降低IT服务成本的架构优化、流程优化等越来越受到人们的重视。其中,以自动化为起点代替人工操作的要求得到了广泛的研究和应用。
IT运维自诞生和发展以来,自动化作为其重要属性之一,不仅取代了人工操作,更重要的是解决如何在当前条件下优化业绩和服务,同时实现投资收益最大化。自动化对IT运维的影响不仅是人与设备的关系,而且已经发展到以客户服务为导向的IT运维决策水平,IT运维团队的组成,包括各级技术人员和业务人员,甚至是广大的用户。
因此,IT运维自动化是根据IT服务需求,将静态设备结构转化为动态灵活响应的一组策略。目的是实现IT运维的质量,降低成本。可以说自动化一定是IT运维最重要的属性之一,但并不是全部。
随着技术的进步和业务需求的快速增长,一个运维人员通常管理成百上千台服务器,运维工作变得烦琐和复杂。运维工作自动化,可以将运维人员从服务器的管理中解放出来,使得运维工作简单、快捷、准确。