用于从许多带有“for”循环的URL中获取HTML信息的X射线使对象未定义

x-ray for grabbing html info from many urls with "for" loop are letting objs undefined

本文关键字:信息 HTML 未定义 对象 获取 URL 许多带 for 用于 循环      更新时间:2023-09-26

我正在尝试自动从许多网址中获取信息。我有一个地址为arrayDep的数组,我有一个"for"循环我的数组并进入网站。之后,我使用X射线来获取我想要的信息。目前我正在使用 console.log 来查看它,但稍后我会将它们添加到我的数据库中。问题是我在等待时间后收到未定义的对象,有时是服务器繁忙的消息,我认为这与我尝试运行 X 射线的时间有关,所以我尝试添加超时,可惜没有成功:(

法典:

 for (var i = 0; i < arrayDep.length; i++) {
   x.timeout(4000);
   x('http://www.camara.leg.br/internet/deputado/' + arrayDep[i], {
     title: 'a'
   })(function(err, obj) {
     console.log(obj.title);
   })
 };

您还可以使用异步库来控制并发性,例如使用 eachLimit 函数一次执行不超过 5 个请求:

async.eachLimit(arrayDep,5, function(item){
   x('http://www.camara.leg.br/internet/deputado/' + item),{
   title: 'a'
})(function(err, obj) {
     console.log(obj.title);
   })

您可以使用承诺库。我建议你使用Kriskowal的Q Promises。

这是指向 github 存储库的链接:https://github.com/kriskowal/q

网络上有大量关于Q集成的教程。Kriskowal在YouTube上还有一个长达1小时的视频,他解释了Q及其用途。

我希望这有所帮助。