/ 详情

Spiderman2整个架构的设计思路

Done
owner
Opened this issue  
2016-01-06 14:26

占位。待更新。

Comments (12)

new Spiderman(new Context(conf)).go();
这里能增加多个 conf 么,就是说在一个程序里有能力配置多个待抓取的网站。

ps:第二版整体酷极了,离最好越来越近啦 :)

@ChrysanthemumWang 如果要抓取多个网站,可以加入多个种子,配置多个Target来达到目的,当然,如果你想通过多个Conf来组织,可以更详细的将你的需求或者想法描述出来,我们尝试实现。
PS:现在这个版本还不是稳定的,可能整体还会做一次修改,欢迎经常在这里吐槽问题,我们会及时参与讨论的,也欢迎一起修改源码参与维护哦~

@自风
非常期待能加入到Spiderman2的团队,希望我能尽快熟悉整个项目。
现在感觉或想法是这样:
1、这个版本整体架构发展方向非常赞,相信在爬虫领域具有很高前瞻性。
2、使用便捷性非常好,特别在需要灵活性很高小型抓取需求上,国内用户最喜欢这点。
3、针对一些稍大一点的需求,比如:同时抓取很多网站,每个网站需要设置不同的Properties p,这点相信能理解,大型爬虫需求肯定需要这个。Spiderman2在发展初期,具备这样的可能性,这样不管大的需求小的需求都能满足了。
说得不好请见谅:-

现在,
一个Spiderman(蜘蛛侠)只能创建管理一个Context(蜘蛛)。
new Spiderman(new Context(conf1)).go();
new Spiderman(new Context(conf2)).go();
new Spiderman(new Context(conf3)).go();
不知道是否安全,如上这样就能创建三个Context(蜘蛛),但是也多出两个Spiderman(蜘蛛侠),蜘蛛侠是唯我独尊的大侠,必将统领蜘蛛大军横扫网络,应该让他肩负管理蜘蛛大军的重任。这样理解不知道对不对:- 望指正啦

@ChrysanthemumWang 哈哈,幽默~不过这里的Context并不是蜘蛛大军,Worker才是蜘蛛大军哦~另外,多运行几个Spiderman其实也没啥问题,就是要注意一些配置项,比如去重用的文件存储不能重复。不过我还是不建议这么用,单机下同一个JVM里建议就用一个Spiderman实例就行了。如果你想抓取多个网站,给多个Seed,配置多个Target就行了。

我没说清楚啦,在同时抓取很多网站的时候,有这些需求:
1、有的网站需要多些爬虫线程,有的网站需要少一些线程
2、有的网站需要代理,有的不需要代理
3、有的爬取间隔时间需要长,有的可以短一些
4、有的网站需要定时抓数据,有的只抓一次
5、有的网站优先级高,有的优先级低
等等,通过Seed和Target好像做不到哦~ 希望能加入Spider2的规划啦:-

@自风 当然上述功能现在知名的爬虫都没有这些功能,所以能加进去就酷了:bowtie:

@ChrysanthemumWang 原来如此!你说的这些在Spiderman1里面已经实现啦。不过Spider2里面确实没有考虑到这个,你说的这些我们会加进去的,多谢这么耐心的提意见,要保持哦~

等最新的2.1-dev分支稳定之后,考虑将 @ChrysanthemumWang 的代码合并进来。请 @ChrysanthemumWang 提前看一下 2.1-dev 分支

Status changed to closed

这里输入引用文本

Sign in to comment

状态
Assignees
Milestones
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
Branches
Planed to start   -   Planed to end
-
Top level
Priority
参与者(3)
117 l weiwei 1578913730