Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.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
Javascript 使用for-loop和forEach从网站中提取对象JSON数组的html_Javascript_Jquery_Node.js_Cheerio - Fatal编程技术网

Javascript 使用for-loop和forEach从网站中提取对象JSON数组的html

Javascript 使用for-loop和forEach从网站中提取对象JSON数组的html,javascript,jquery,node.js,cheerio,Javascript,Jquery,Node.js,Cheerio,我正在尝试从该网页的html生成对象的Javascript数组(稍后保存为JSON文件): 我想提取第一部分的职位描述(列在“今天”下)——隐藏在下拉列表下,直到你点击每个职位列表。请参见屏幕截图: 布局是用表构建的:作业列表和作业描述html容器都是同级表行 在该网站上,第一个标有“远程创业公司第一份健康保险”的“列表”是促销内容,因此当你点击下面的内容时,不会有隐藏的工作描述文本 所以在我的代码中,我从索引位置2开始,然后在for循环中以2的倍数进行迭代。这部分是有效的。但是,我需要将此职

我正在尝试从该网页的html生成对象的Javascript数组(稍后保存为JSON文件):

我想提取第一部分的职位描述(列在“今天”下)——隐藏在下拉列表下,直到你点击每个职位列表。请参见屏幕截图:

布局是用表构建的:作业列表和作业描述html容器都是同级表行

在该网站上,第一个标有“远程创业公司第一份健康保险”的“列表”是促销内容,因此当你点击下面的内容时,不会有隐藏的工作描述文本

所以在我的代码中,我从索引位置2开始,然后在for循环中以2的倍数进行迭代。这部分是有效的。但是,我需要将此职务描述添加到数组中已从其他数据创建的每个对象(称为
scrapedArray
):

const first_table_row = $(first_section).find('tr');
      for(var i = 2; i < first_table_row.length; i+= 2) {
        let job_description = $(first_table_row[i]).find('.markdown').html().trim();
        // console.log(job_description);

        scrapedArray.forEach((obj) => {
          obj["job_description"] = job_description;
        });
      }

我做错了什么?有更好的方法吗?

当您在
for
循环中循环
forEach
时,数组中的所有
job\u description
都将分配给一个变量,因此它将具有相同的值(最后一个
循环的值)。我把for循环从1改为2,因为你需要公司的标志,对吗?
检查下面的代码,我已经检查过了,它可以工作了

let scrapedArray = [];
// Get the first tbody
let first_section = $('#jobsboard tbody')[0];

const first_table_row = $(first_section).find('tr');
for (var i = 1; i < first_table_row.length; i += 2) {
  let company_logo = $(first_table_row[i]).find('.logo').attr('src');
  let job_description = $(first_table_row[i + 1]).find('.markdown').html().trim();
  scrapedArray.push({
    company_logo, job_description
  });
}
console.log(scrapedArray);
让Darray=[];
//找到第一个尸体
让first_section=$('jobsboard tbody')[0];
const first_table_row=$(first_section.find('tr');
对于(变量i=1;i
希望这有帮助

let scrapedArray = [];
// Get the first tbody
let first_section = $('#jobsboard tbody')[0];

const first_table_row = $(first_section).find('tr');
for (var i = 1; i < first_table_row.length; i += 2) {
  let company_logo = $(first_table_row[i]).find('.logo').attr('src');
  let job_description = $(first_table_row[i + 1]).find('.markdown').html().trim();
  scrapedArray.push({
    company_logo, job_description
  });
}
console.log(scrapedArray);