本文为《爬着学Python》系列第一篇文章。
关于用爬虫辅助Python的学习原因就不再赘述了。直接进入正题。
Python
首先是Python(Python - Wikipedia)语言的特点,也就是,为什么要学习Python?
原因很简单,因为Python是一门简单的语言,”人生苦短,我用Python“。但是,简单的同时功能强大,这是Python能真正流行的原因。
Python的简单体现在:语句清晰简洁,结构明了。Python不会像Java长得像作文,它甚至不用声明变量类型,你不需要在语句后面加上;
,你不需要一层层的{}
包住循环和函数……这些,有简明的缩写、人性的语法糖,缩进的格式来帮你完成。
Python是脚本语言,这是它简单的原因之一,但是它的强大在于它是个灵活而又完备的脚本语言。比如Javascript同样作为脚本语言,却长时间难以胜任后端开发的任务,直到Node.js的出现。要知道,Python在web开发方面可谓是得心应手。虽然这个问题深究下去还有其他的原因,但在此暂时按下不表。
为了一窥Python的黑魔法,举一个老套的例子,将两个数字变量换值。
在C语言中代码是这样的:
void main(){
int a=2,b=3,c;
c=a;
a=b;
b=c;
return 0;
}
或者是这样的:
void main(){
int a=2,b=3;
a=a+b;
b=a-b;
a=a-b;
return 0;
}
然而,在Python中,代码这样就可以了:
>>>a = 2
>>>b = 3
>>>a, b = b, a
Python的简单暴力显而易见,不仅仅是语句简明,实现方式上也比C要"人性化"多了。
在现在的开发中,Python的简单暴力在而且丰富的第三方库帮助下能大大减轻项目的实现压力,这是Python越来越受到欢迎的主要原因。我们经常有想法,Python能以最便捷的方式用代码实现这样的想法,这是它的价值所在。
Python的第三方库非常丰富(PyPI - the Python Package Index),安装简单(pip)。熟练地使用第三方库是使用Python的一部分,在没有必要重复造轮子的时候,我们完全可以先考虑能不能找到可用的第三方库简化我们的工作。
当然,Python也有它局限的地方,比如它的运行速度。但是这个问题其实倒也不大,把Python节省的时间用来优化算法,或者把关键的部分用C或其他语言重写也可以。而且,所谓的"慢",往往是程序设计上的问题而不是语言造成的。Python的运行速度在我看来是瑕不掩瑜的。Python的另一个问题在于Python2与Python3的代码存在一定程度上的断代,这个问题说大不大说小也不小,属于能解决但让人挺难受的那部分。
爬虫
以上就算是简单介绍一下Python的特点了。接下来简单说一说爬虫(网络爬虫_百度百科)。
其实爬虫本身也没什么好说的,知道他是获取网页信息的工具就足够了,百度百科的介绍就挺好的。我主要就讲一讲在之后的爬虫学习中会涉及到的问题吧。
首先是爬虫的结构与工作原理(图侵删)。
从图上可以比较简单地看出爬虫就是个重复访问网页获取内容获取链接的一个工具。在之后接触到scrapy框架以后我们会再次给出一个更加完整的结构。
而我们的学习刚开始没这么复杂,我们只要能用命令行获取百度百科的内容就算是爬虫入门了。
之后我们会了解Python爬虫各种获取内容、解析内容的方式,当然,这之间会插入正则表达式简单的应用,而正则式的强大功能会在更后面的学习中接触。
再后来我们就要学会优化我们的爬虫,让它学会登陆,让它学会伪装自己,让它不仅仅是爬取也要同时织网等等。这要求我们要掌握基本的web知识、数据结构知识、I/O操作知识,这些我们都会在后面的学习中一步步去熟悉。
当完成以上的学习以后,我们可以构建分布式爬虫,我们可以做一些很极客的事情,我们甚至有可能涉足法律的灰色地带。但是,前提是我们得要一步步踏实地学习。
虽然昨天第一天就跳票了,但我会争取日更。
链接
- 维基百科Python介绍-Python(programming_language) - Wikipedia
- Python第三方库索引-PyPI - the Python Package Index
- 百度百科爬虫介绍-网络爬虫_百度百科