未能在 google 应用程序脚本中以正确的方式使用地图功能

Failed to use map function in the right way within google apps script

我无法在 google 应用程序脚本中以正确的方式使用地图功能,同时从 webpage 抓取两个字段 - movie nameimage

function scrapeMovies() {
  const URL = "https://yts.am/browse-movies";

  const response = UrlFetchApp.fetch(URL);
  const $ = Cheerio.load(response.getContentText()); 

  const container = $(".browse-movie-wrap");
  const result = container.map(item => {
    const movieName = $(item).find('a.browse-movie-title').text();
    const movieImage = $(item).find('img.img-responsive').attr('src');
    console.log(movieName,movieImage);
  });
}

当我执行脚本时,我得到的结果是 undefined

您仍然可以使用 map,但您需要更改访问元素的方式。

它是 undefined 的原因是因为您试图对 index 值执行 find。经测试,每个元素上的容器 returns [index, item] 而不是 [item, index]。指定您想要的第二个元素将解决问题。

const result = container.map((index, item) => {
  const movieName = $(item).find('a.browse-movie-title').text();
  const movieImage = $(item).find('img.img-responsive').attr('src');
  console.log(movieName, movieImage);
});

但是由于您没有 returning 任何东西,只需使用 Sysix 提到的 each

注:

  • 出于某种原因,如果我在使用 map 并尝试记录 result.[=39= 时将两个值 return 都输入 result,则执行不会结束]
  • 我测试了另一种存储数据的方法,下面的脚本有效。
var result = [];
container.each((index, item) => {
  const movieName = $(item).find('a.browse-movie-title').text();
  const movieImage = $(item).find('img.img-responsive').attr('src');
  result.push([movieName, movieImage]);
});
console.log(result);