比方说有1万个关键词['query1', 'query2' ... ... ]我要用这些关键词爬虫抓网上的数据,有两个接口,一个是获取当前query所有的页数,一个是获取当前query当前页的数据。首先请求第一个接口拿到当前query有多少页,然后再获取每一次的数据每次请求必须等上一个请求完成,防止网站崩溃我用node写的,请问有解决的办法吗?
2 回答
白板的微信
TA贡献1883条经验 获得超3个赞
我们有个服务比较类似。主要用到了队列,队列是基于redis实现的,大概原理如下:
实现单个任务的功能
任务A实现后将数据放到到队列A中
任务B从队列A中消费数据,成功则删除当前任务,失败则重新存入,任务B完成后产生的数据存储队列B
任务C从队列B中消费数据,成功则删除当前任务,失败则重新存入,任务C完成后产生的数据存储队列C
这样整个流程的任务呗拆分出来,业务逻辑也简单化,方便维护,并且,任务ABC都是并行计算的,且相对隔离
HUH函数
TA贡献1836条经验 获得超4个赞
这里面涉及到的技术点如下:
发出 HTTP 请求,用 http 模块的 get 或者 request 函数;
分析请求到的页面数据,假设页面是 html 页面,可以用 cheerio 来解析页面的 DOM 结构,获取页面上的数据;
异步流程控制,因为 node.js 是单线程异步执行的,所以你如果两个任务需要串行执行,需要进行流程控制;
流程控制可以自己实现,也可以用第三方库来实现;
能想到的大概就是这些,欢迎大家补充。
添加回答
举报
0/150
提交
取消