如何设计一个python分布式爬虫系统

 我来答
从空去听8
2017-11-19 · TA获得超过7440个赞
知道大有可为答主
回答量:6907
采纳率:93%
帮助的人:5589万
展开全部
你都没想明白为什么要分布式
========================
我还是认真答一下吧,爬虫这种东西在大批量抓去时主要有下面几个量变引发质变的挑战:
1. 出口IP数量,主要是考虑防止被封禁,带宽反而不是大问题,这个问题可以通过搭建NAT出口集群,或者单机多IP的方式实现
2. 本地端口号耗尽,由于爬虫是服务端编程不太常见的主动发起连接的应用,在普通只有一个IP绑定的机器上会受到65535的限制(一般在50000多就会受到限制)
3. 大容量存储的需求,一般都是通过开源或者自己研发的分布式存储系统来实现,像谷歌(GFS)和百度(百灵)都是自研,这里就不展开说了
4. 动态网页的支持,像京东这种网站,内容都是通过类似Facebook的bigpipe一样动态加载的,直接像curl这样抓取看到的页面几乎是空白的,这就要求爬虫能模拟JS的运行,这方面有很多基于v8引擎的开源项目:
CasperJS, a navigation scripting and testing utility for PhantomJS and SlimerJS
PhantomJS | PhantomJS
由于这个需求,爬虫成了CPU密集型的应用了,分布式的需求也就有了
单机爬虫的主要难点在的异步非阻塞网络编程,老生常谈了。先暂时写这么多吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式