javascript - 如何向多个 URL 发出请求并解析每个页面的结果?
问题描述
我正在使用流行的 npm 包 Cheerio 来请求检索一些表数据。
虽然我可以轻松地从单个页面检索和解析表格,但我想循环/处理多个页面。
我已经尝试在循环/包提供的各种实用程序中async
包装,但无法弄清楚这一点。在大多数情况下,节点内存不足。
当前代码:
const cheerio = require('cheerio');
const axios = require("axios");
var url = someUrl;
const getData = async url => {
try {
const response = await axios.get(url);
const data = response.data;
const $ = cheerio.load(data);
const announcement = $(`#someId`).each(function(i, elm) {
console.log($(this).text())
})
} catch (error) {
console.log(error);
}
};
getData(url); //<--- Would like to give an array here to fetch from multiple urls / pages
在尝试循环之后,我目前的方法是将其包装在另一个带有回调参数的函数中。然而,还没有成功,而且变得相当混乱。
向此函数提供数组的最佳方法是什么?
解决方案
您是否尝试过使用Promise.all
(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all)?
在处理异步调用时,for 循环通常是一个坏主意。这取决于您要拨打多少电话,但我相信这已经足够了。我会使用一组 promise 来获取数据并映射结果来进行解析。
推荐阅读
- sql - 如何根据postgres中json数组中的键更新值?
- python - ManimGL 不能正确渲染 SVGMobject,这是为什么呢?我所有的其他场景都很漂亮
- google-mlkit - 非英语语言的 ML-KIT 文本识别
- python - 使用 BS 从 Python 中的 CSV 中提取表
- arrays - 关于函数和字符数组如何在函数参数中工作的模糊概念
- java - AdMob 自适应广告横幅几乎占据屏幕的一半(纵向模式)
- javascript - 错误:元素类型无效:需要字符串(对于内置组件)或类/函数(对于复合组件),但得到:对象。在反应
- java - 没有通过公认的 API 方法 (glfwMakeContextCurrent) 使 OpenGL 上下文成为当前的
- android - 为什么有状态小部件无法在颤动中保持其状态
- flutter - java - 带有输出错误的颤振,“列表”类型的值
?不能分配给“列表”类型的变量