Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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
Arrays 抓取数组的链接,使用节点horseman保存到.json_Arrays_Json_Node.js - Fatal编程技术网

Arrays 抓取数组的链接,使用节点horseman保存到.json

Arrays 抓取数组的链接,使用节点horseman保存到.json,arrays,json,node.js,Arrays,Json,Node.js,我们正在制作一个简单的脚本来浏览一个网站的站点地图,并获取所有链接和href值,然后将其保存到一个.json列表中,另一个模块可以使用该列表对访问过的页面进行截图 到目前为止,我们可以获得获取列表的函数。当它在控制台中运行时,将显示要放入阵列的数据 在终端中运行时,未找到任何内容,也未填充阵列 var fs=require('fs'); var Horseman=require('node-Horseman'); var horseman=新的horseman(); 函数findAllUrls

我们正在制作一个简单的脚本来浏览一个网站的站点地图,并获取所有链接和href值,然后将其保存到一个.json列表中,另一个模块可以使用该列表对访问过的页面进行截图

到目前为止,我们可以获得获取列表的函数。当它在控制台中运行时,将显示要放入阵列的数据

在终端中运行时,未找到任何内容,也未填充阵列

var fs=require('fs');
var Horseman=require('node-Horseman');
var horseman=新的horseman();
函数findAllUrls(选择器){
var url=[];
//抓住所有的锚
$(选择器)。每个(函数(){
//循环遍历每个锚点并获取href值
变量url={
标题:$(this).text(),
url:$(this.attr(“href”)
};
//将href值放入新数组中
推送(url);
});
//最后返回所有href值的数组
log(“记录FindAllURL中的所有URL”,URL);
返回URL;
};
骑手
.open(URL位于此处)
.evaluate(findAllUrls,“.sitemap链接a”)
.then(函数(URL){
日志(URL);
//将URL保存到json文件(查找节点“fs”模块)
fs.writeFile('url.json',URL,函数(err){
如果(错误)抛出错误;
log('保存到url.json');
});
})

.close()Horseman是一个基于承诺的API。因此,findAllUrls必须做出承诺。然后是一个承诺,而不是数组。正在发生的是。然后在findAllUrls返回之前运行,因为它不期望任何东西。我建议你仔细阅读承诺。这是另一篇关于承诺的优秀文章。最后,来自horseman文档的内容与您正在尝试的内容非常相似

类似的内容可能适用于您正在尝试的操作(未经测试):


Horseman是一个基于承诺的API。因此,findAllUrls必须做出承诺。然后是一个承诺,而不是数组。正在发生的是。然后在findAllUrls返回之前运行,因为它不期望任何东西。我建议你仔细阅读承诺。这是另一篇关于承诺的优秀文章。最后,来自horseman文档的内容与您正在尝试的内容非常相似

类似的内容可能适用于您正在尝试的操作(未经测试):


我遇到了类似的问题。这只是意味着在求值函数中的某个地方,horseman遇到了一个错误(但根据经验,它并没有显示它是什么错误)。如果遇到错误,它将自动返回null

解决方案是逐行仔细检查评估函数,哪一行会产生错误,这可能很困难,因为horseman没有指出哪一行有问题


请注意,evaluate函数有多个返回值的选项:回调、承诺和实际值。因此,可以立即返回值,无需承诺,如文档中所述。

我遇到了类似的问题。这只是意味着在求值函数中的某个地方,horseman遇到了一个错误(但根据经验,它并没有显示它是什么错误)。如果遇到错误,它将自动返回null

解决方案是逐行仔细检查评估函数,哪一行会产生错误,这可能很困难,因为horseman没有指出哪一行有问题

请注意,evaluate函数有多个返回值的选项:回调、承诺和实际值。因此,可以立即返回值,无需承诺,如文档中所述

function findAllUrls(selector) {
  return horseman.evaluate(function () {
      var urls = [];

      // get all the anchors
      $(selector).each(function() {

      // loop through each anchor and get the href value
        var url = {
          title: $(this).text(),
          url: $(this).attr("href")
        };

      // put the href value in a new array
        urls.push(url);
      });

      // finally return the array of all the href value
      console.log("Log all urls from findAllUrls", urls);
      return urls;
    });
};