“入门”是良好的动机,但是可能作用缓慢。如果你手里或者脑子里有一个项目,那么实践起来你会被目标驱动,而不会像学习模块一样慢慢学习。
另外如果说知识体系里的每一个知识点是图里的点,依赖关系是边的话,那么这个图一定不是一个有向无环图。因为学习A的经验可以帮助你学习B。因此,你不需要学习怎么样“入门”,因为这样的“入门”点根本不存在!你需要学习的是怎么样做一个比较大的东西,在这个过程中,你会很快地学会需要学会的东西的。当然,你可以争论说需要先懂python,不然怎么学会python做爬虫呢?但是事实上,你完全可以在做这个爬虫的过程中学习ython :D
看到前面很多答案都讲的“术”——用什么软件怎么爬,那我就讲讲“道”和“术”吧——爬虫怎么工作以及怎么在python实现。先长话短说summarize一下:
你需要学习
- 基本的爬虫工作原理
- 基本的http抓取工具,scrapy
- Bloom Filter: Bloom Filters by Example
- 如果需要大规模网页抓取,你需要学习分布式爬虫的概念。其实没那么玄乎,你只要学会怎样维护一个所有集群机器能够有效分享的分布式队列就好。最简单的实现是python-rq: https://github.com/nvie/rq
- rq和Scrapy的结合:darkrho/scrapy-redis · GitHub
- 后续处理,网页析取(grangier/python-goose · GitHub),存储(Mongodb)
那么源码时代小编来总结一下:
从爬虫基本要求来看:
- 抓取:抓取最基本就是拉网页回来,所以第一步就是拉网页回来,慢慢会发现各种问题待优化;
- 存储:抓回来一般会用一定策略存下来,可以选择存文件系统开始,然后以一定规则命名。
- 分析:对网页进行文本分析,可以用认为最快最优的办法,比如正则表达式;
- 展示:要是做了一堆事情,一点展示输出都没有,如何展现价值。
另外小编在这里推荐一本书《用Python写网络爬虫》,里面主要讲述的内容有:通过跟踪链接来爬取网站;使用lxml从页面中抽取数据;构建线程爬虫来并行爬取页面;将下载的内容进行缓存,以降低带宽消耗;解析依赖于JavaScript的网站;与表单和会话进行交互;解决受保护页面的验证码问题;对AJAX调用进行逆向工程;使用Scrapy创建高级爬虫。
风里雨里,在源码时代python爬虫课程等你。