ITPub博客

首页 > 数据库 > 数据库开发技术 > 周,Crossin带你一起学爬虫

周,Crossin带你一起学爬虫

原创 数据库开发技术 作者:Crossin的编程教室 时间:2019-08-16 20:18:16 0 删除 编辑
写在前面:

本文探讨学习编程过程中会遇到的一些困境,以及这些问题的背后原因。

在文章后半部,我会介绍我们编程教室即将开展的“学习小组”活动,此活动面向付费学员,你也可以现在加入。

如果你对于活动不感兴趣,或者对“付费”排斥,那你可以只看前面或者现在直接关闭文章。但如果你想参与,请务必认真阅读活动说明。我不希望你是因冲动而加入,原因在后面我会解释。


编程学习困境


请思考一下,在你学习编程的过程中,是否有过以下经历,或正在面临类似的局面:

  • 网上有很多资料,不知道从哪里看起

  • 跟着教程一样地做,运行结果就是不一样

  • 也看完了某个教程和视频,似乎明白了,但还是没法自己写代码

  • 想要从事某个方向或者开发出某个软件,不知道需要学什么

  • “入门”了很多次,每次过两个月就又全忘了


“从入门到放弃”不只是一句玩笑话,确实有太多的问题让编程初学者停留在入门阶段。


为什么会这样?


抛开编程本身的难度、思维方式,以及学习环境、学习者的动力等因素之外,我想谈一点常被人忽略或刻意回避的原因:


编程技能不是一个线性的学习过程


我见过不少人会问,某某课程的大纲是怎样,或者你能不能列我一个学习路径,让我能顺着看下去。放在某一个特定的技能点上,这个大纲可能是存在的。但从更宏观的角度来看,编程技能一定是一个网状结构,好比下图所演示:



python语言是其中的一个点,网页前端基础是另一个,数据分析、服务器部署、爬虫、数据结构……都是不同的点。这些点有大有小,有的点展开来,又是由更多的小点组成。这些点之间互相连接,有的是另一些的必要前序,有的则互为关联。


一个程序员脑中的技能图谱,就是各类的技能点,以及点和点之间的关联关系。他会对他擅长领域的那一系列点很熟悉,而当遇到新的问题时,则会寻找必要的新技能点,把它吸收到自己的技能图谱中。


但对于很多新手来说,并不了解这个网状结构的存在,于是就会存在一些问题:

  1. 缺少整体认知,并不了解完成一个任务需要多少相关的知识。比如听人说零基础学习三个月python就可以去做人工智能开发。实际上,python基础只是人工智能相关技能树中非常底部的一个技能点而已,只是完成了这个技能,抬头望向人工智能,自然还是一脸懵。

  2. 学习目标不具体,觉得我按照某个教程学就可以了。这样的问题在于,学了一阵子之后,就不知道自己在看的内容到底是用来做什么的,而且越看问题越多。因为技能树上的节点错综复杂,如果你不是目标驱动型,而是想先按照某个标准“学完”,那很可能陷入信息的泥潭。学习编程的本质是学习“解决问题”,你连问题都没有,要怎么学呢?

  3. 不清楚哪些是必要技能,即使目标明确了,比如我要做一个可联网的微信小程序,在完全没有经验的前提下,依然是难以入手的,只能停留在照搬例子的程度。


以部署服务器为例,如果我写一篇教程告诉你怎么在阿里云的一台服务器上运行你用 python 写的网站,篇幅不会太长,网上类似教程不少。但这里面牵涉到技能点包括 python、web框架、web服务器、数据库、防火墙、域名、Linux命令、权限管理、远程登录……甚至Vim文件的保存都可能让你卡上2个小时(这不是玩笑,StackOverflow上一个如何退出Vim的问题已经有200万次浏览)。如果你不在你的技能树上去点亮这些相关技能,把它们关联起来,而只追求一条从起点到终点的捷径,那对于开发来说几乎是没有意义的。即使你照着教程成功操作,下一次只要出现一点点偏差你可能就束手无策了。


编程学习不是一个单纯的技能培训,达到一定的训练时长就能上岗的事情。它需要学习者主动去思考,如何用代码去解决问题。代码、框架、工具都是手段,解决问题才是目的。有个很流行的10000小时理论:做一件事,只要你坚持10000小时,就会成为专家。但对编程来说,如果你永远照着别人代码抄而不思考,即使学了10000个小时,也只会成为一名极为熟练的打字员。


大学计算机专业为什么要在四年上那么多专业课?目的就是为了给学生建立起这个技能树的基础。相比之下,即使针对某个方向进行短期的培训,点亮几个必要技能点,同样也可以达到完成某个任务的程度,但这两种技能结构的强壮性显然是不一样的。


所以要怎么办?


对于学习者来说,我的建议是:

  1. 先明确一个目标,这个目标越具体越好(比如写一个程序每天定时发邮件提醒自己要给女朋友发消息)

  2. 然后以这个目标为终点,反向了解你需要学习的技能(比如需要了解发送邮件、定时任务、python基础)

  3. 最后朝着目标去逐个点亮这些技能点

  4. 回到 步骤1,确定下一步的目标,不断重复这个过程,迭代式地学习。


然而,这里有个矛盾的点。我作为一个初学者,连基础都还没掌握呢,我哪能知道完成一个目标需要哪些技能?


于是只有去找有经验的人寻求帮助,或者去网上寻找相关的指南。


学习小组


我做编程教室这六年来,解答类似的疑问已经很多次了。我觉得现在有条件给类似的学习者提供一个更完善的解决方案。


之前我做了问卷调查,根据学员的需求,接下来我们会重点在语言基础、爬虫、数据分析、网站开发等方向开展一系列的“学习小组”活动。一个小组相当于一个技能点,里面会设定任务,以及完成这些任务所需的知识点和思路。每次小组的学习周期不会太长,类似于敏捷开发中的 Sprint(冲刺),在短周期内集中完成一个目标。通过这样化整为零的方式,帮你把一棵技能树切分成很多小组,逐个点亮。


我们提供什么?


  1. 给你一个脉络。以我熟悉领域的经验,给你提供一个整体的认知,让你了解达到某个目标应该学什么

  2. 协助你点亮一个个技能点。给你提供学习建议,告诉你怎么学,并在过程中答疑解惑

  3. 任务驱动式学习。不断给你抛出问题,锻炼你解决问题的能力。设定规则,指导并监督任务的完成。

  4. 为学习者提供一个共同学习的组织


目前,小组的开展还在初期,今年下半年预计开展不少于 7 个小组:

基础类:①实例学python - ②刷题小组

数据类:③爬虫基础 - ④数据可视化 - ⑤pandas/numpy 学习

Web类:⑥django入门 - ⑦Linux网站部署

(具体小组可能会有微调,见后续通知)


小组学习模式


注意!如果你有意参与学习小组,请务必先确认了解我们的学习模式!


  1. 前面已提到,小组是任务驱动式的学习。主要有两种:一种是我们有设定好的开发任务,你需要在规定时间内完成。我们会提供完成任务所需的参考资料、解题思路,并提供相关的集中讨论、答疑和参考解答代码。另一种是组队刷题/刷书/刷教程,我们会挑选优质的学习资料,在学习期限内共同学习,同样提供集中讨论和答疑。

  2. 无论上述哪种模式,都需要学习者主动参与,而不是被动听课。我们不是培训班。如果没有按时完成任务,会被移出小组。

  3. 考虑到很多学习者都是业余时间学习,所以小组的进度设定不会特别紧,但仍然需要你在一段时间内保证足够的学习时间。

  4. 参与一两个小组不可能让你实现质的飞跃,编程学习是一个长期的过程。


所以,如果你没有主动学习的意识、没有足够的学习时间、没有长期学习的心态,请勿参与我们的学习小组,这里恐怕不适合你。我不希望通过夸大其词、虚假承诺来刺激任何学习者冲动付费。参与进来,我们就是要在学习之路上一起走下去的同行者,需要相互的信任,你们走得越远,我们编程教室也就走得越久。所以这也是我在开头为什么说,不希望你因冲动而加入。


爬虫小组介绍


首期我们推出的是 21天爬虫实战小组。


另外预告一下,面向零基础的 实例学Python小组 也会在近期开启。


适合人群

对网络爬虫感兴趣,或想从事爬虫/反爬/数据分析等相关岗位


所需基础

已经掌握一定的Python基础,对于基础的语法、常用的类型、字符串处理、函数、模块等已经了解,可以通过增加输出和阅读报错信息调试代码中的问题(debug)


适用场景

从网络上采集数据

监控在线信息的变动

对公开数据进行分析或预测

实现自动发帖、自动回复等功能


学完能做什么?

调用网络接口

批量下载多媒体文件

采集大部分网站信息

结构化保存数据


小组任务概要


  1. 安装相关工具,了解爬虫,使用 requests 网络请求库

  2. 通过豆瓣 API 抓取 Top250 电影信息,保存至 CSV 文件,并下载电影海报

  3. 用 Chrome 开发者工具分析网页请求

  4. 模拟登录状态和初步的反爬

  5. 利用 bs4 解析网页信息

  6. 结构化抓取信息,综合练习


时间与安排


  1. 本期小组时间:8月24日 ~ 9月13日

  2. 每周2次集中讨论(周三、周六 晚20点),共3周6次。讨论时发布本次任务及学习资料、实现思路,讲评上次任务作业。如果你当时没参与,也可以在之后查看群内聊天记录,并在任何时间提出疑问

  3. 作业会通过网页发布和提交,也会在群内提醒

  4. 参与者需在下次讨论前完成并提交作业。如未提交,需在再下次讨论之前补交。否则将被移出本期小组。

  5. 每次除了提交自己作业外,也需要查看并点评其他同学的代码

  6. 开发中遇到卡壳的bug,在自己尝试搜索和debug之后仍未解决时,可以随时在群里提出


费用


  1. 学习小组采用会员制,同主题小组会定期重复开放,也会不断开设新的小组。会员期限内,可不限次数地参与各小组。

  2. 2019年将开设超过7个小组,并会根据学员报名情况循环开组。费用为 500 元,期限至 2019年12月31日。另附送原价499元的码上行动在线课程。(关于码上行动的介绍请在公众号里回复 码上行动)

  3. 已购买过码上行动课程的学员,仅需 1 元即可获得 2019 会员资格。

  4. 如果不想成为会员,仅想单独参与此次 21天爬虫实战小组,费用为 200 元,如未完成,后续可再次参加同主题小组。

  5. 付费方式,请联系微信 crossin11 进行付费。添加时请备注 学习小组。请勿在添加后重复咨询本文中已写明的问题,阅读文档是编程的基本能力之一。


其他说明


  1. 编程教室的积分可以抵扣会员费用,1分=1元(参与码上行动和打卡活动都可以获取积分)

  2. 组队优惠:3人以上组队报名,新学员每人可优惠 50元。欢迎各位在交流群中找人组队,这么做不只是想要你们邀请别人参与,更是希望你们在之后的过程中确实形成一个团队,共同学习(小组规则中本身就含有互相点评代码的要求)。在小组结束之后,我们也会对表现突出的小队额外奖励。

  3. 每次小组之后,完成的学员会有一定积分奖励。

  4. 为保证教学质量,当会员总数超过500人后,会对价格进行调整以限制人数,并关闭组队优惠。(历史付费学员人数是不止500人的,但会有多少人参与此次学习小组活动,我也难估计)


最后,再次重申一下我们的理念:

  1. 任务驱动

  2. 主动学习

  3. 建立技能树

  4. 学习解决问题的方法


我们不是培训课程,也不保证你三个月薪资过万,请认真考虑后再购买。


指导老师介绍


Crossin,国内知名大学计算机硕士,计算机视觉及神经网络相关方向。曾就职于 IBM、Ubisoft,在数家创业公司担任后端架构师、技术总监。Python 开发者大会讲师。在互联网金融、在线教育、VR/AR、游戏等领域有丰富的行业经验。


公众号“Crossin 的编程教室”专注于 Python 方向的教学六年多,教程文章在各渠道累计阅读量已达数千万,微信关注用户超二十万,并入选上海市“科技创业计划项目”。


过往学员


虽然本期是学习小组的第一期,但其理念源自编程教室这两年开展的“实训生计划”,可以理解为将原本线下的实训模式搬到线上,更便于学习者在业余时间参与。之前的实训生已有数位成为软件工程师,从事相关开发工作。你们在编程教室看到的教学案例,其中有一部分的代码便是出自实训学员之手。


学员参考案例:

我从编程教室毕业

爬虫+网站开发实例:电影票比价网

分享一点微信小程序的开发经验

去年电影国内票房最高的演员是谁

用python爬虫追踪知乎/B站大V排行

当下的Python就业前景如何


希望在不久之后,你的代码也会在我们的公众号中展示,进而真正掌握编程这项技能。

原文作者:Crossin的编程教室;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2015-06-05

  • 博文量
    498
  • 访问量
    200503