背景
这个事情还要从Google或者百度说起。目前的搜索引擎,一般都拥有自己的一套网页检索算法,方便大家迅速的找到需要的网页。但是,当我们在使用各种搜索引擎的时候,是否思考过这样一个问题:搜索引擎是如何搜索到最新网页的信息,并且展现在搜索结果页上的呢?答案就是网页爬虫。
百度蜘蛛,是百度搜索引擎的一个自动程序。它的作用是访问收集整理互联网上的网页、图片、视频等内容,然后分门别类建立索引数据库,使用户能在百度搜索引擎中搜索到您网站的网页、图片、视频等内容。 ——来源·百度百科《百度蜘蛛》
在最初,网页爬虫技术似乎就只是为搜索引擎服务的:一方面是搜索引擎的技术性需要,另一方面是当时的互联网信息,还没有这么庞大,最终的一点是,当时的用户对及时性服务还不是这么迫切。但是现在,网页爬虫早已挣脱了之前的技术局限性,被广泛的应用在各个领域中。例如前阵子大放光彩的“即刻”APP,其核心就是网页爬虫技术。
网页爬虫在不断发展中也产生了很多的新颖并且实用的框架,也从当初的特定编程语言,变成了现在的五花八门,各放异彩的编程语言。然而,在众多的编程语言中,Python无疑是最为重要,也是最为广泛的语言,这期达人课,我们就以Python 作为我们的主力编程语言,助力我们的“起飞”。
Python介绍
无论你之前学过什么语言,无论你是否了解Python,在正式学习本课程前,你需要告诉自己:Python作为高级编程语言,哪怕你没有编程的基础,你也可以高傲而且自豪地去使用它!
本门课程无意争辩到底哪门语言的效率最高,亦或是哪个编程语言是最好的。选择Python 作为本门课程的主力编程语言的理由主要有以下原因:
- Python 简单易学,初学者在什么都不了解的情况下,都可以很好的上手;
- Python 自带的封装接口,以及丰富的第三方库大大简化了我们的开发流程,一些看上去很难实现的功能,往往一行代码就能够搞定;
- 基于Python 开发的网页爬虫框架众多,方便我们以后的深入学习。
Python 给自己的定义,就是一个“胶水”语言:哪里需要哪里用。或许和C++、Go等一些语言相比,Python 的运行速度很慢,但是需要指出的是,这里的“速度慢”,仅仅是相比较而言。例如,发送邮件,使用C++需要0.1秒,Python 则需要1秒。虽然速度相差10倍,但是作为日常开发而言,Python 的速度已经完全满足了我们的开发要求。
热度
Python 网络爬虫技术本身发展特别快,甚至可以说,网页爬虫技术随着Python 的发展而发展。从最初Python 自带的urllib 库,到现在流行的BeautifulSoup4、Selenium 等第三方框架。可以说,在网络爬虫的世界中,Python 一直处于”最强王者“的地位。
此图来自于百度指数(2018年4月23日)。可以发现的是,从2014年开始,Python 爬虫的搜索指数呈大幅上升的趋势,也同时应征了Python 在网页爬虫领域上的地位。
在全球知名的Github 网站上,搜索“爬虫”,有5077项使用Python 写的网页爬虫项目,比排名第二的java多出了将近3.5倍!
为什么学习网页爬虫
- 从互联网技术发展的角度来看,越来越多的公司开始拥抱Python 技术栈。与此相对应的是,越来越多的公司也开始提供了类似Python 网页爬取工程师、分布式网页爬取架构师等工作职位。Python 爬虫技术已经成为互联网公司不可或缺的技术方向;
- Python 网页爬虫所包含的技术栈,包含了Python 基础操作、HTML 结构分析、计算机网络特性等互联网公司正在使用的技术,学习Python 网页爬虫技术,可以很好地侧类旁通了解其他技术;
- 网页爬虫技术在日常生活中有很大的用处,学习网页爬虫技术可以帮助我们更好的“享受生活”。
这个课程可以学到什么
早些时候由于个人兴趣原因研究并使用了Python,在使用时发现,国内关于Python 网页爬虫的教程虽然很多、内容丰富,但是往往涉及到特别多的前期准备,并不适合Python 新人上手。为了帮助一位学弟尽快的入手网页爬虫技术,我自己总结了自己的网页爬虫学习路线,结合他的实际应用,做出了一套适合新手入门学习的Python 网页爬虫教程。在这套教程的帮助下,学弟很快掌握了核心的技术栈,并且顺利的完成了我对他的毕业要求。
本期达人课,首先介绍Python 和网页的一些基础知识,带你快速的学习Python 的基础语法,再一起讨论网页爬虫框架的使用,如何通过邮件或者短信发送我们需要的信息,最后使用我们学到的技术实现一个在服务器运行的成绩通知短信系统,进行实战演练。
需要强调的是,Python 网页爬虫技术栈经过近几年的发展,可以说已经自成一脉。如果要将这些技术全部展现出来,不仅工作量巨大,而且涉及的技术对于新手也太过深奥。因此,本期达人课涉及的知识仅仅包含了Python 网页爬虫的一小部分,同时因为作者的能力有限,所包含的技术还较为浅显。如有不当,还希望各位多多见谅,提出修改建议。
适合阅读的人群
该系列文章适合以下人群阅读:
- 刚学完Python 基础课程,希望做一个有趣的实战项目的人员
- 对Python 网页爬虫感兴趣,希望尽快上手核心技术的开发人员
- 希望做一个提高生活效率的在校学生或其他人员
在学习本课程之前,希望你有一些基础的开发技能,例如:独立的用C++写出一个从1加到10的控制台程序。
开发环境:
- JetBrains PyCharm 2017.3.3 x64 (也可以使用其他IDE)
- Python 3.5
使用到的软件:
- MySQL
- fidder4
- Requests
- BeautifulSoup 4
- …
专栏列表
- 关于网页爬取那些事儿
- Python 极速教程
- 网页基础知识一点通
- 爬取你的第一个网页
- 使用网页爬虫利器—Requests
- 让BeautifulSoup4 提高你的效率
- 让MySQL帮你保存指定的信息
- 使用Python 的邮件模块发送信息
- 使用短信接口发送信息
- “天上的馅饼”:免费的短信通知方式
- 让你的系统全天候为你服务
- 让你拥有“火眼金睛”的fiddr4和其他工具
- 实战成绩通知短信系统(上)
- 实战成绩通知短信系统(上)
- 常见的反爬虫和反反爬虫技术
- 项目总结