最开始接触爬虫的时候,简直就是惊为天人,看别人十几行python代码就能把无数网页上的信息爬取下来。
对于这些数据,利用的好可以发挥很多价值,比如:市场调研、用户调研等等。互联网发展到今天,这种技能不掌握真是太浪费了,于是果断开始学习爬虫。
1.并没想象的那么容易
因为自己本身对python了解的也不是很多,于是马上着手开始学习python,但是在没人指导的情况下确实很迷茫(mb)。
通过网上查的一些资料,以及参考别人的学习过程,于是看了一些书籍,了解数据结构,然后是列、表、字典、函数、控制语句等(常用的条件语句、循环语句)。
学了一段时间后,回过头来看,其实自己并没接触到真正的爬虫,而且学习纯理论的东西长时间不用就会忘记,只能回头继续复习,确实很浪费时间。
2.直接上手阶段
之前在csdn逛gai的时候看到别的大牛分享的技术贴,清晰的思路一看就懂,这才是我应该学习的爬虫。于是决定自己先搭建一个环境试试,看看能玩成什么样子。
因为怕出错,装了比较保险的 Anaconda,用自带的 Jupyter Notebook 作为IDE来写代码。看到很多人说因为配置环境出各种BUG,简直庆幸。很多时候打败你的,并不是事情本身,说的就是爬虫配置环境这事儿。
遇到的另一个问题是,**Python 的爬虫可以用很多包或者框架来实现,应该选哪一种呢?**我的原则就是是简单好用,写的代码少,对于一个小白来说,性能、效率什么的,统统被我 pass 了。于是开始接触 urllib、美丽汤(BeautifulSoup),因为听别人说很简单。
我上手的第一个案例是爬取豆瓣的电影,照着一些爬取豆瓣电影的入门级例子开始看,从这些例子里面,了解了一点点爬虫的基本原理:下载页面、解析页面、定位并抽取数据。
代码就不展示了,最终通过别人的思路和自己查找美丽汤的用法,完成了豆瓣电影的基本信息爬取。
3.走上正轨
有了第一步的实践,就需要继续往下学习、尝试,比如爬取多个元素、翻页、处理多种情况等涉及的语句控制,又比如提取内容时涉及到的字符串、列表、字典的处理,还远远不够。
再回去补充 Python 的基础知识,就很有针对性,而且能马上能用于解决问题,也就理解得更深刻。
BeautifulSoup 还算不错,但需要花一些时间去了解一些网页的基本知识,否则一些元素的定位和选取还是会头疼。
后来认识到 xpath 之后相见恨晚,这才是入门必备利器啊,直接Chrome复制就可以了,指哪打哪。即便是要自己写 xpath,以w3school上几页的 xpath 教程,一个小时也可以搞定了。requests 貌似也比 urllib 更好用,但摸索总归是试错的过程,试错成本就是时间。
4.反爬是道坎儿
在爬取一些网站的时候,可能是涉及到了敏感信息,发现很多内容根本无法爬取,而且IP经常被封禁。简单的可以通过 time.sleep() 控制爬取频率的方法解决,限制比较严格或者需要保证爬取速度,就要用代理IP来解决。
后来也试了一下 Selenium,这个就真的是按照真实的用户浏览行为(点击、搜索、翻页)来实现爬虫,所以对于那些反爬虫特别厉害的网站,又没有办法解决。但是Selenium 确实非常好用易上手,虽然速度稍微慢点。
5.初尝Scrapy 框架
使用 requests+xpath 和抓包大法确实可以解决很多网站信息的爬取,但是对于信息量比较大或者需要分模块爬取的话,就会显得寸步难行。
后来应用到了强大的 Scrapy 框架,它不仅能便捷地构建 Request,还有强大的 Selector 能够方便地解析 Response,然而最让人惊喜的还是它超高的性能,可以将爬虫工程化、模块化。
学会 Scrapy,自己去尝试搭建了简单的爬虫框架,在做大规模数据爬取的时候能够结构化、工程化地思考大规模的爬取问题,这使我可以从爬虫工程的维度去思考问题。
再后来开始逐渐接触到分布式爬虫,这个东西听着挺唬人,但其实就是利用多线程的原理让多个爬虫同时工作,能够实现更高的效率。
总结一下我学习python爬虫过程所走过的一些坑
1、缺少合理的学习路径,上来 Python、HTML 各种学,极其容易放弃;
2、网上的资料非常零散,而且对小白不友好,很多看起来云里雾里;
3、没有专业的人知道,会走很多的弯路,自己都不知道要往哪里学。
所以很多爬虫工程师,都会有跟我一样的体会:爬虫这玩意儿不需要多精湛的代码技术,也不需要多深的数据库知识,只要有合理的学习路径以及实操项目,都能学好。
当然麻烦的是,在具体的问题中,如何找到具体需要的那部分学习资源、如何筛选和甄别,遇到困难时如何有效解决,是很多初学者面临的大问题。
大家如果想学好Python爬虫可以试试我的方法和资料(点击这里领取),除了为你提供一条清晰、无痛的学习路径,还甄选了最实用的学习资源以及庞大的主流爬虫案例库。即便是零基础,经过短时间的学习,也能很好地掌握爬虫这个技能,获取你想得到的数据。
爬虫学习大纲
高效的学习路径
一上来就讲理论、语法、编程语言是非常不合理的,我们会直接从具体的案例入手,通过实际的操作,学习具体的知识点。我们为你规划了一条系统的学习路径,让你不再面对零散的知识点。
比如我们会直接教你网页解析,减少你不必要的检查网页元素的操作,这些看似细节,但可能是很多人都会踩的坑。
20+实战案例边学边练
- 超多案例,覆盖主流网站 -
课程中提供了目前最常见的网站爬虫案例:豆瓣、知乎、瓜子二手车、赶集网、链家网、王者荣耀……每个案例在课程视频中都有详细分析,老师带你完成每一步操作,专治各种 “看得懂案例,写不出代码” 。
赶集网实战项目
学会使用正则表达式提取整个网页的数据。
王者荣耀之战项目
1、破解王者荣耀高清壁纸下载链接。
2、利用多线程高速下载高清壁纸。
3、按照英雄名称存储对应壁纸。
链家网分布式爬虫
1、用Scrapy框架实现商业爬虫。
2、用多台机器实现分布式爬虫。
3、实现全国各个省市二手房信息的爬取。
4、将爬取下来的数据存储到redis中。