美文网首页编程技术类爬虫 Python计算机+技术+世界
#我对Python表个白# —— 爬虫学习总结(2)

#我对Python表个白# —— 爬虫学习总结(2)

作者: Wakingup88688 | 来源:发表于2017-05-15 14:57 被阅读1255次

    总结 | 反思 | 分享

    学习Python爬虫2个月了,一路惊喜一路bug,苦辣酸甜不言中。今天正好周末,做一下阶段性总结。

    怎么是总结(2)?因为(1)在这里呀:自学爬虫一月总结

    (还有看到这个标题大家也别太疑惑,只是参加了彭老师的征文大赛顺便加上了而已233)

    以下内容将围绕这张图展开:

    一、学习收获

    数据说话

    从今年3月初开始,0基础自学。中间也是断断续续,因为还要上课。总共做了主要项目13个,写了博客16篇。目前在scrapy的进阶阶段,准备学习分布式。

    4月11日开通了知乎专栏,现在刚好1个月。

    5月14日 15:50为止,各种数据

    简书文集:文章16,文集订阅82,浏览5.8k,评论130,喜欢123,赞赏10

    知乎专栏:文章16,专栏关注934,收藏2.0K,评论307,赞同659,赞赏4

    github项目:star25,fork 9,watch 3

    其它:收到不少盆友的反馈,有问如何学习爬虫的,有在评论区支持鼓励的,有大神提意见给建议的,有私信我要坚持写下去的,值乎问问题的,直接过来问联系方式的233,甚至有专栏、公众号求转载的,还有半夜两点过来文章下面赞赏支持的。。。

    我一个萌新,真的是受宠若惊啊!

    8976309452

    收到这么多反馈和鼓励,出乎意料,超级超级感动~

    特此谢谢每一位关注、支持我的朋友们,宽容我的烂文、烂代码还愿意提供宝贵建议的大神们,鞠躬,笔芯,么么哒 \^O^/~

    我会继续保证文章的质量,同时努力学习出更高阶、更系统的内容。

    还有这段时间,不仅学到了一些python爬虫知识,对python编程开始有了接触和了解,随着学习也认识了自己的不足。学习过程中认识了很多热爱python、热爱数据科学的盆友和大神,从他们身上也学到很多东西。

    二、一些分享

    其实本来想写"经验分享",可是想想编程界卧虎藏龙,而且自己目前学的连冰山一角都算不上,这样岂不班门弄斧(其实我也不造,当初哪来的耿直勇气开知乎专栏@_@)

    坑已然挖好不好回头,还是谈谈我的看法吧,也算是回答之前一些盆友们的问题~ (一些观点不成熟,大神们笑笑就好~)

    1)如何学习python爬虫

    2)如何做好一个项目

    3)如何写好一篇博客

    1)学习python爬虫

    1、学习路线及资料推荐

    这个问题有一些同学来问过,我在自学爬虫一月总结提过一些但不是很全,现在进行一下补充。

    (当然以下仅是我个人的看法,每个人学习曲线、学习方式都不一样,做个参考就好)

    首先建议先对爬虫做个大概了解,推荐董大的Live:爬虫从入门到进阶

    然后就是Python基础学习,书籍可以《简明python教程》或者《learn python the hard way》等,博客推荐廖雪峰老师的Python3教程 。单单为了学习爬虫,可以先跳过web开发部分。

    爬虫基础urllib,re,requests,BeautifulSoup,Xpath等等,崔庆才大神的博客:Python爬虫学习系列教程,单单看看这些基础知识肯定枯燥,结合例子最好不过啦,于是可以循序渐进的看看上面例子。中间会需要一些http知识,可以看《图解http》。

    爬完文字爬图片,爬完静态爬动态。然后遇到Ajax网页就需要抓包,这个就讲的不错:爬虫从入门到精通——网页的下载,顺带提一下这个专栏一些基础知识很详细。

    爬到拉勾、豆瓣了,会独立(对是独立)分析网页抓包,能够绕过一些简单的反爬,进行文件、excel、数据库等简单存储,这时候就差不多爬虫入门了。

    然后可以学习爬虫框架如scrapy、pyspider等。scrapy基础推荐专栏木制robot的爬虫世界,很详细,而且值得一提作者自学成功转行了,比较遗憾的是只介绍了几篇。(目前我也在看scrapy,想汇总做一个较系统的系列。不过惭愧,学习速度还是太慢了)

    进阶篇,最常见多进程、多线程,selenium,PhantomJS,网上教程很散需要自己挖掘,还是回归静谧的博客

    其实进阶的话还远不止这些,在知乎上看到几个思路:Python爬虫进阶?-知乎,这个问题xlzd王家葳这两个大神的答案很精彩。

    然后董大(董伟明)在 python分享中初级爬虫教程泛滥是否有其语法特征和生态环境的锅?- 知乎 中提供的思路也非常不错。

    应该了解到要做的东西其实还很多,代理IP池、Cookies池、验证码、分布式、缓存、调度、反反爬等等,需要自己慢慢摸索了。

    推荐几个大神的博客:

    简书:蜗牛仔treelakeqiyecomboo(这家伙已经在分析框架的源码了)

    知乎专栏:一起学习python网络爬虫撸代码,学知识数据冰山学习编程

    笑虎大神的专栏"撸代码、学知识",文章质量很高,且不限于Python爬虫,里面甚至有一些Flask开发的介绍等等。

    "数据冰山"人气旺,偏重于数据分析挖掘,不过可以扩大视野不是,爬虫本来就是用来分析的嘛~~

    还有"学习编程"是“数据帝”路人甲路人甲的专栏(大家都应该不陌生),除了学习借鉴数据分析的思维方式,里面偶尔会有一些学习编程的资料推荐,不能太棒哦。

    此外还可以去github上找,很多不说了,提一个有趣的反反爬仓库:Anti-Anti-Spider,应该很多人都知道。

    之后还可以分析框架源码,开发自己的爬虫框架,甚至写可视化的爬虫。

    (当然这时你很可能已经不满足于爬虫了,学学web开发就挺好,搞搞数据分析机器学习也不错)

    当你已经"爬过万水千山",浏览器能get基本也能爬到,并且有能力开发自己的爬虫框架,这时你就已经达到一种境界了,所谓"看山还是山,看水还是水"。

    更高级的还有搜索引擎,好远啊不扯了>_<

    目前暂时就是这些,想到再补充,也欢迎大家评论区提建议~

    2、我的学习方式

    之前的总结说过了:自学爬虫一月总结

    总的来说:大体需求、项目驱动、知识点复查、博客记录、定时总结


    3、其它,比如是否需要培训

    一句话:于心而言真的不需要,看个人,小心智商税

    2 )做好一个项目

    python爬虫学习对实战的要求很强,除了get基础技能,反反爬经验也是必需在实战中积累的。

    不过项目在精而不在多,入门后你会发现许多东西都是如出一辙,许多网站通过抓包调用API就可实现,这时候真的没有必要再迷恋在抓取简单网页的成就感中了(这是不是爬虫初级教程泛滥的原因之一233),你需要赶紧的进阶,进阶,进阶!!!

    我觉得关键在于:如何设计学习路线,通过较少的项目,循序渐进地进行爬虫学习。

    不过做好一个项目也不是那么简单的事情,细节的东西太多了,首先安装都能成为一个坑。不信你看,这是我安装mysql遭遇的:

    还好宝宝心理素质比较强,那如何做好一个项目呢,在明确好学习路线后,有几个点

    1、基础知识

    基础知识一般官网资料就可以了。有时觉得一些博客更浅简易懂,而且很多东西是经过作者思考过归纳汇总的,可以借鉴。

    2、分析源码和网站结构、制定抓取策略

    其实我很少看审查元素,一般是直接分析源码。这么做是因为,我们的浏览器访问网页时“看到”的东西,其实是源码。如果你是初学,不要怕密集恐惧啦,养成习惯后渐渐会变得很有意思哦。

    比如我在爬pexels图片网时,发现其图片接口就隐藏在源码中;分析豆瓣发现其分PC端和移动端,两者网页不太一样,而且分析发现不登陆的话,某些数据是无法爬下来的;分析拉勾时发现了它的页面变动的规律,一个障眼法22333 。

    还有网站结构,主要是找出url规律和网站反爬策略,对于有一点前端经验的盆友来说,简直不是事儿呀。

    然后就是指定爬取策略了,可以根据html结构选择最合适、高效的数据提取方式,是re,BeautifulSoup,还是Xpath?

    3、先自己做,有自己的想法

    我的话最初两个例子是照着崔庆才大神的博客来的,后面就全自己找了。个人觉得在大概摸清爬虫程序的套路后(一两个例子),遇到一个项目,自己想思路,自己写程序,实在不行再借鉴别人的方法。

    纸上得来终觉浅,绝知此事要躬行,别人的收获毕竟也只是别人的,不亲自探索,还是很难真正学到东西

    4、它山之石,可以攻玉

    有时候我们借鉴别人一些好的想法,将其运用于我们的项目中,然后可以事半功倍。(感叹互联网的开源精神、开放共享环境就是棒呀) 但并不意味着将复制粘贴就完了,至少得理解一下原理和思路吧,加上自己的想法那更好啦~

    我的博客前两篇,虽然是跟着崔庆才大神的博客学习的,但是真正爬取的时候并不是一步步照搬,而是自己适当改了下; 在Scrapy之断点续爬(存入MySQL)中,断点续爬想法来自知乎,但发现实例很少啊,于是自己写程序实践了它,参考了大神的博客的一小段,但觉得累赘根据情况改了一下,然后又查资料发现了另一种python中操作mysql的方法。

    你看,大概就这样,有点github上fork思想的意味?

    5、寻求最佳方案

    这里就不赘述了。寻求解决问题新途径,有没有别的方式呢,怎样实现最简单有效美好?不断改bug,不断提需求,再改,直到满意为止。(记得当初做那个pixabay图片下载器也改了好久)

    6、提高搜商

    何为“搜商”,就是搜索定位有效资源的能力。简直程序员必备技能啊。学习过程中各种bug,遇到问题首先自己解决最靠谱。

    目前网络这么发达,百度、知乎、谷歌、知乎、简书、stackoverflow、CSDN等等,一般的小坎还是容易过得去的。

    逛逛别人的博客,或者浏览某个社区,偶尔还会发现一些好的知识点和思路呢。(之前在stackoverflow上发现个神奇的语法糖,于是拿来用了,爬教务网仅花代码30行左右)

    7、善用工具

    不说太多,IDE用Pycharm就不错,抓包fiddler,数据分析BDP简单粗暴,数据库可视化Navicat等等,利用工具提高开发效率。

    8、学会提问

    来自知乎路人甲,很赞:如何向别人请教问题才能得到解答回复?

    3)写好一篇博客

    1、明确主题

    2、突出亮点、有自己的想法

    建立在做好项目的基础上,不赘述。

    3、充实内容

    需要准备好各种材料。

    4、逻辑清晰

    我一般采用“总分总”模式,分点展开,文末最后简要总结。觉得这样不仅仅逻辑清晰,也可以锻炼自己归纳总结的能力,同时查找的时候也非常方便:D

    5、语言鲜明

    哈哈这一点上我可能是假的段子手→_→

    但,还是建议严肃一点来写技术文,毕竟,抖机灵也是要看天赋哒:D (逃~

    6、尊重版权

    引用别人的东西,最好注明来源、作者。

    7、产品意识

    这一点最初是在彭老师的文章里看到的,很有意思(目前找不到了orz),大概意思是:如何最小化的代价做出一个东西,如何扩展形成一个系列体系?

    其实与爬虫学习路线设计紧密相关,形成体系后也益处多多,若一个完整的知识体系,复习起来基本不费力?

    三、总结反思

    1、不足之处

    首先基础存在很大漏洞,才发现其实前面爬虫中,根本就不需要多少python知识的,基本的数据结构、文件操作、类与模块、函数和面向对象都差不多了。到了Scrapy这一块,装饰器初露水面,各种中间件写起来就费力了,目前恶补基础中。

    其次是浮躁,感觉是没有以前静的下心,是因为夏天到了还是进阶本来就麻烦?

    最后说一下,爬虫真的是上手快精通难,越到后面需要考虑的东西就越多,爬与反爬之间的博弈愈发强势,做一个项目花时间越来越多了,挺累。

    2、进阶的一些想法

    肯定得先补好基础啦,然后分布式希望月底之前拿下来,暑假想学flask搭个博客,之后还想学算法(貌似时间不够用啊(゚Д゚)ノ)

    四、我的爬虫博客系列

    前两天有位大神在简书下写了评论,很庆幸与其交流了一下,大神的建议很有用,同时也愈发感觉进阶之路漫漫。

    之后,居然有人说我的博客越来越成体系了,很惊讶。这一说还真萌生了将其扩充成一个体系的想法,然后就是下面这样:

    分四个阶段:

    入门篇、框架篇、进阶篇、源码分析篇

    <入门篇>

    1、一行正则抓取糗事百科

    2、百度贴吧

    3、pixabay图片下载器

    4、破解pexels高清原图

    5、抓包爬遍info神回复(玻璃杯事件)

    6、30行代码获取教务网成绩并存入Excel

    7、拉勾网爬虫(一)

    拉勾网爬虫(二)

    8、爬豆瓣张国荣日记(一)

    爬豆瓣张国荣日记(二)

    <框架篇>(部分待探索学习)

    主要介绍Scrapy

    1、Scrapy之单级网页抓取(简书30日热门

    2、Scrapy爬多级网页及图片(一般方法)

    3、Scrapy爬多级网页及图片(ImagesPipeline)

    4、Scrapy抓手机App数据(存入MongoDB )

    5、Scrapy实现断点续爬(存入MySQL)

    6、Scrapy之代理ip、ip池

    7、Scrapy之Cookies、Cookies池

    9、Scrapy-redis构建简单分布式

    10、Scrapy-redis较复杂的分布式

    <进阶篇>(待探索学习)

    1、多线程

    2、多进程

    3、多线程+多进程

    4、selenium、PhantomJS破解JS网页

    6、验证码破解

    7、视频类爬虫系列

    8、大规模电商爬虫系列(淘宝|京东|亚马逊)

    9、自己开发个分布式爬虫框架(难)

    10、写可视化的爬虫(难)

    <源码分析篇>(待探索学习)

    1、Scrapy源码分析

    2、requests源码分析等等

    (以上也只初步构想,不能保证完全完成)

    按顺序学习,点亮到进阶篇倒数第三个,应该可以找得到工作了吧?

    若如期找到工作,会不会很幸福呢

    五、最后的总结

    不得不说,学习爬虫真的很真像升级打怪。需要我们不断对自己提需求,解决掉一个又一个问题后,提升自信心。整个过程涵盖解决问题、总结归纳、表达展现、形成系列等环节,但其实深入思考,发现最终都可以归结为一个思维方式的终极问题。

    面对一个问题,如何定位有效资源,如何快速熟悉一个领域,如何制定初步方案,如何解决执行中出现的问题,如何不断优化、维护并打造一款产品系列......这些思维方式,其实是放之四海而皆准的。

    惯用总结套路就不来了,放个图

    16篇文章,一个爬虫系列,一篇总结文,加一个思维导图。勉强算有理有据,逻辑清晰?算不算对python表了个白?

    如果这都不算爱

    那我

    我就

    抖个机灵吧~

    (实打干货没人看,抖个机灵千百赞?)

    总是套路留人心啊~

    23333

    都让一下,我要放大招了,哼~

    表白文艺范,怎能少了诗?不说了,总之

    路漫漫其修远兮,吾将上下而爬虫

    洛阳亲友如相问,唯有python在心中

    相关文章

      网友评论

      • LitOrange:收一个,好像挺有用的
      • 造数科技:🤗🤗🤗
        造数科技: @Wakingup88688 🙃🙂😙😚😗
        Wakingup88688: @崔斯特呀 这个是什么表情😂
      • loading_miracle:你是洛阳的?
        loading_miracle: @Wakingup88688 哈哈哈,可以
        Wakingup88688: @loading_miracle 不是哦~其实是改了下那句诗“洛阳亲友如相问,一片冰心在玉壶”
      • 54d7ffabb63a:我好像 。。好像上榜了。。哈哈 ,真心干货 ,要好好学习 ,谢谢分享啊!
        Wakingup88688: @石洋洋 谢谢,笔芯⊙ω⊙ 我会继续努力哒:D
        54d7ffabb63a:@Wakingup88688 真心不错啊 发到群里给小伙伴们看了 都说灰常nice
        Wakingup88688: @石洋洋 其实我想一一艾特的,但是发现人太多了,真的感谢支持!
        这篇文章5000字,花了半天构思,然后写了两天233,算是前前后后总结了个遍吧😂初心很简单:多多总结,以后回顾,少踩坑。如果对大家有帮助再好不过,一起加油😀

      本文标题:#我对Python表个白# —— 爬虫学习总结(2)

      本文链接:https://www.haomeiwen.com/subject/jyiqxxtx.html