cron作业服务器是否密集型,如果抓取数百万个URL并将数据更新到mongodb?

问题描述 投票:1回答:1

我正在尝试使用instagram作为测试对象来构建一个小型React Native应用项目。我希望能够从URL显示instagram视频,并且想知道这样做的最佳方法是什么?

[想法是使用puppeteer(或类似的库)和cherrio来抓取数百个instagram url的URL,然后抓取视频源URL,并将其存储到mongodb中。由于Instagram的CDN视频网址每隔几天会更改一次,因此我不得不以某种方式频繁地抓取该网址,以免返回错误的时间戳错误。使用cron作业自动化并不断获取新的视频URL并将其存储在mongodb中是一种好方法吗?

如果列表继续增长到成千上万甚至更多,它将以多快的速度获取新的URL?在服务器上它会太密集吗?

还有更好的方法吗?

node.js mongodb web-scraping cron instagram-api
1个回答
1
投票

您将面临的最大挑战将不是受到instagram的速率限制。即,任何大型网站每个时隙(同一分钟/秒/等)只能允许一定数量的请求(可能是每分钟/秒/等)。在更坏的情况下,您的IP将被他们完全列入黑名单。甚至服务器所属的整个子网都将被阻止。

另一个障碍是木偶/铬资源的匮乏。如果以并行方式处理页面,它将耗尽您的所有CPU和内存。那么该服务器上运行的所有其他内容有时会变慢或根本不响应。

[某些网站,例如amazonon,google等,采用反机器人策略,例如重新验证,以防止抓取。

我并不是说不可能。克服所有障碍需要大量资源,知识和精力,但可以做到。我正在运行自己的change detection & notification服务(我的个人资料中的链接),并且大部分时间都是全职工作。我正在管理1台前端服务器+ 13刮板服务器(每个服务器并行运行20个伪造的浏览器,每个浏览器都有自己的ip地址,假装自己是唯一的用户/浏览器/ ip /会话组合)。

此外,您应该使用cron以外的其他东西进行调度。只需编写您自己的服务即可并行执行操作,并在服务器重启或进程终止的情况下自动/正常恢复。

我的意思是,您需要在开发整个基础架构上进行大量投资,并持续进行管理以抓取数百万个页面。特别是如果来自同一网站。

© www.soinside.com 2019 - 2024. All rights reserved.