如何入门 Python 爬虫

如题所述

从爬虫必要的几个基本需求来讲:
1.抓取
  python的urllib不一定去用,但是要学,如果还没用过的话。
  比较好的替代品有requests等第三方更人性化、成熟的库,如果pyer不了解各种库,那就白学了。
  抓取最基本就是拉网页回来。
  如果深入做下去,会发现要面对不同的网页要求,比如有认证的,不同文件格式、编码处理,各种奇怪的url合规化处理、重复抓取问题、cookies跟随问题、多线程多进程抓取、多节点抓取、抓取调度、资源压缩等一系列问题。
  所以第一步就是拉网页回来,慢慢会发现各种问题待优化。
2.存储
  抓回来一般会用一定策略存下来,而不是直接分析,个人觉得更好的架构应该是把分析和抓取分离,更加松散,每个环节出了问题能够隔离另外一个环节可能出现的问题,好排查也好更新发布。
  那么存文件系统、SQLorNOSQL数据库、内存数据库,如何去存就是这个环节的重点。
  可以选择存文件系统开始,然后以一定规则命名。
3.分析
  对网页进行文本分析,提取链接也好,提取正文也好,总之看的需求,但是一定要做的就是分析链接了。
  可以用认为最快最优的办法,比如正则表达式。
  然后将分析后的结果应用与其他环节:)
4.展示
  要是做了一堆事情,一点展示输出都没有,如何展现价值。
  所以找到好的展示组件,去show出肌肉也是关键。
  如果为了做个站去写爬虫,抑或要分析某个东西的数据,都不要忘了这个环节,更好地把结果展示出来给别人感受。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-29
“入门”是良好的动机,但是可能作用缓慢。如果你手里或者脑子里有一个项目,那么实践起来你会被目标驱动,而不会像学习模块一样慢慢学习。

另外如果说知识体系里的每一个知识点是图里的点,依赖关系是边的话,那么这个图一定不是一个有向无环图。因为学习A的经验可以帮助你学习B。因此,你不需要学习怎么样“入门”,因为这样的“入门”点根本不存在!你需要学习的是怎么样做一个比较大的东西,在这个过程中,你会很快地学会需要学会的东西的。当然,你可以争论说需要先懂python,不然怎么学会python做爬虫呢?但是事实上,你完全可以在做这个爬虫的过程中学习python :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)本回答被提问者和网友采纳
相似回答