编程技术类爬虫 Python计算机+技术+世界

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

2017-05-15  本文已影响1255人  Wakingup88688

总结 | 反思 | 分享

学习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在心中

上一篇 下一篇

猜你喜欢

热点阅读