写给青少年的网页爬虫学习指南

少儿编程 Python 爬虫

注意,这是一篇写给青少年的入门指南。
我们不会做非常深入的探讨,而是浅尝辄止,给初学者描绘一个概貌和入门指引。

缘起

那一天,人们终于回想起了被爬虫所支配的恐惧

2019元旦期间,有位同学报名学习 Python,上来就问了我一个问题,“什么时候可以开始学习爬虫呢?”

老师当时就被震惊了。现在的小朋友果然不可以低估啊。要知道猫老师本猫都还没实际操作过爬虫呢。而00后10后已经在以此为目标了。我不禁想问,这位少年,看你骨骼清奇,我这里有一本金牌黑客秘籍要不要看下?

玩笑归玩笑。有明确目标的学习,效果会是出类拔萃的。虽然猫老师之前并未专门对这项技术的教学做过准备,但是只要同学有需要,我们就不会被问题难住。教学相长,为了不辜负同学们的期望,我们决定从制作一个例子开始。

什么是爬虫

网络爬虫(crawler),又被称为蜘蛛(spider)。是一种可以根据某种设定的规则自动运行,抓取互联网上的信息的程序。我们经常使用的百度、必应、谷歌这些搜索引擎,它们背后的重要支撑,就是网络爬虫。这些爬虫不知疲倦地抓取网站的信息并加以综合整理,最终成为帮助我们快速检索需要的信息的利器。

从这个简单的描述,我们就可以知道,一个爬虫至少需要三个要素:

  1. 抓取信息
  2. 数据存储和整理
  3. 数据呈现

这几个方面,每一个点都可以引申更多更深入的技术,值得数十年如一日地潜心研究。我们没有办法一一介绍,这一点你只要想象一下这些搜索引擎公司,为什么能凭借这个技术成长为互联网巨头就明白了。

但是作为初学者,想通过一些简单的学习,大致了解爬虫的工作原理,甚至做一些简单的爬虫应用,还是有可能的。

爬虫的基本工作原理

同学们可能已经了解,互联网是通过超链接(URL)访问和相互联系的。比如新闻门户网站上就排布着大量隐藏在新闻标题背后的超链接。

想象一下,整个互联网就好比是一张……啊不对,是很多很多张通过各种方式连接在一起的蜘蛛网。现在假设你是一只蜘蛛,把你放在网上,需要把所有的蛛丝都走过一遍(看一遍所有网页),要怎么做呢?

首先,我们先随便从什么地方开始,爬过一根蛛丝,遇到分叉就按照某种规则选择其中一条。按照这种方式不停爬行,迟早有一天,整个网络都会被蜘蛛爬过一遍。

这就是爬虫的基本工作原理,也是爬虫为什么叫爬虫(或者蜘蛛)的原因。

网络爬虫跟这只蜘蛛的区别在于,爬过的地方需要有地方存储它看到的信息。通常,由于这些信息非常庞大,我们需要使用数据库来进行存储。

除了这种通用的爬虫,还有一些有特定目标的爬虫,比如在网络购物时,可能会需要用到的比价网站,就是通过爬虫,抓取所有购物网站的信息,对相同商品同一时间不同网站的价格,或者历史价格进行对比和分析。

所以爬虫技术也是大数据的基础之一。由此可见,如何对抓取到的数据进行存储、整理、分析和最终的呈现,也非常重要。

实现爬虫需要的能力、工具及学习路径

知道了爬虫的基本工作原理,用Python去实现它需要什么工具也就大体有些概念了。

  • 编程基础知识
    • Python 编程基础
    • Python 网络编程
    • Python 模块使用
    • 数据结构和算法
  • Web 开发基本知识
    • HTML/DOM
    • CSS
    • JavaScript
  • 正则表达式
  • 数据库基础
  • ……

需要指出的是 Python 并非制作爬虫的唯一选择。你其实可以用任何喜欢的语言来实现。只是现阶段用 Python 来实现爬虫非常有利。一是因为 Python 的语法简洁易懂;二是已经有很多、很好用的专为 Python 爬虫设计的第三方模块(什么是模块,我们会在 Python 中级课程中讲授)。

Python 的学习路径,猫老师已经在《Python 是个什么东西?》有简单说明。有兴趣的同学可以回顾一下。简单来说就是首先学基础的语法,然后包含数据结构和算法的高级特性,接下来,针对性学习爬虫所需的具体技术和模块。

例子程序:最右神回复

有一个知名问答网站,网友们可以在上面提出任何你想问的问题,然后就会有热心的或者内行的网友认真书写回答。

在这些回答中,有一些短小精悍,回味无穷的回复,被网友们戏称“神回复”。

我们这一次的例子,就以它为“下手”的目标。通过一个爬虫,来方便的汇总这些“神回复”。

这个爬虫属于定向聚焦爬虫。针对特定网站,特定目的。于是我们需要找到初始页面、根据规则抓取答案、对答案进行筛选和存储、通过小程序进行前端呈现。

爬虫部分,因为非常简单,我们没有使用著名的 Scrapy 库,而是用相对较轻的 requests 库来执行 url 请求,用 lxml 库及正则表达式来解析抓取到的网页,并用 pymongo 进行数据存储和整理。

前端呈现,我们制作了一个微信小程序。这里又涉及了 WebApp、HTML/CSS、RestApi、Hash 等等知识。好在这不是我们的重点,你也完全可以不去考虑,仅仅在自己的个人电脑上输出数据,开心就好。

当然,也许有一天我们也会开始介绍如何进行前端的实现。在这里,就先简单地体验一下吧。

小结

这个小程序的最初版本,Jason老师和猫老师两个人花了大约两天时间,分别写出了前端(小程序)和后端(爬虫)。其中,爬虫部分的核心部分不超过一百行 Python 代码。但是,初学者仍需要从最基本的知识和概念学习,方能理解那短短几十行代码究竟干了些什么。

真正实用的爬虫,还需要考虑很多问题。比如,面对大量网站海量数据,如何提高抓取的效率;如何并行处理和存储;如何避免重复抓取,同时减少遗漏;如何将抓取的信息结构化存储;如何降低存储空间并提高查询性能和效率……不要怕,科技就是在不断发现、提问、研究、解决、迭代的过程中不断进步的。我们的学习也是一样。

最后,祝所有想要学习爬虫的同学都能早日实现自己的爬虫程序。
但是千万要注意,请合理、合法地使用爬虫,并避免大量高频访问某个网站,不然不要怪老师没有警告你会被封IP、封账号哦!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343