新手在设计他的建筑问题在这里:
我的目标 我想随着时间的推移跟踪多个Twitter个人资料。
我要构建的东西:
一个SpiderMother
类,它与某些数据库(持有CrawlJobs)接口以产生和管理许多小型Spider,每个Spider以不规则的间隔在twitter上爬行1个用户页面(作业将根据某种算法添加到数据库中) 。
它们由SpiderMother
作为子流程生成,并且根据抓取的成功程度,数据库作业将被删除。这是一个好的架构吗?
我看到的问题:
让我们说我产生了100只蜘蛛,而我的CONCURRENT_REQUESTS
限制是10只,twitter.com会立即被全部100只蜘蛛击中吗,还是它们排成一排然后又一个接一个?
答案 0 :(得分:2)
在运行期间,将为当前打开的蜘蛛隔离大多数scrapy设置/运行时配置。默认的scrapy请求下载器也仅对每个蜘蛛起作用,因此,如果启动100个进程,则确实会看到100个同时请求。您可以通过多种方法在全球范围内强制执行每个域的并发操作,而这些选项都没有特别麻烦:
我个人可能会选择第一个,如果受到单个过程规模的性能限制的影响,我可能会选择第二个。