Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在node.js中运行多个(>200)http请求,而不会出现ENOTFOUND错误_Node.js_Http_Web Scraping_Axios - Fatal编程技术网

如何在node.js中运行多个(>200)http请求,而不会出现ENOTFOUND错误

如何在node.js中运行多个(>200)http请求,而不会出现ENOTFOUND错误,node.js,http,web-scraping,axios,Node.js,Http,Web Scraping,Axios,我正试图从一个网站上抓取一大串页面。 以下是我提出的axios请求: Promise.all(urls.map((url, index) => axios(url))).then(function (values) { ........ }); URL对象只有一堆大于13000的URL。如果我把这个数字保持在200,整个代码工作正常。但是当我把整个物体放进去的时候,我得到了: errno:'ENOTFOUND', 代码:“ENOTFOUND”, 系统调用:“getad

我正试图从一个网站上抓取一大串页面。 以下是我提出的axios请求:

 Promise.all(urls.map((url, index) => axios(url))).then(function (values) {
        ........
 });
URL对象只有一堆大于13000的URL。如果我把这个数字保持在200,整个代码工作正常。但是当我把整个物体放进去的时候,我得到了:

errno:'ENOTFOUND', 代码:“ENOTFOUND”, 系统调用:“getaddrinfo”


我已经阅读了所有现有的答案,但没有任何帮助,所以请

这需要将请求分块发送给服务器,每次发送100个请求。每次尝试调用API时,它都会发送到DNS服务器,因此。它有时会丢弃许多请求,或者无法在注册表中获取您的主机地址。因此,请尝试使用npm的dnscache。 也


在代理文件中或在调用API的代码所在的位置需要'dnscache'{enable:true}。这将使DNS包成为主机的第一个签入本地缓存,如果在本地找不到,则转到DNS。

我想您应该使用catch块捕获错误。我确实有一个捕获。这就是告诉我错误的原因。我建议不要一次点击那么多请求,尝试在某种分页中点击它们。可能是您的服务器资源在遇到如此大的请求时被消耗掉了。getaddrinfo也是一个DNS问题。是的,我尝试为每个请求创建一个新的promise包装器,虽然延迟很长,但仍然存在相同的错误。我正在抓取的网站是一家相当大的公司,所以我很确定这是一个节点问题。