返回

使用 Cheerio 抓取 <meta> 内容

发布时间:2022-06-23 23:40:56 229
# 脚本

Tanaike 使用 Cheerio 帮助我完成了这个惊人的脚本。原件是为 Letterboxd 设计的,但这个是从 Trakt.tv 中提取的一个监视列表(示例监视列表)。

就像现在一样,它会提取观看日期和标题,但我还想从每个项目的元标记中提取内容。

<meta content="8 Million Ways to Die (1986)" itemprop="name">

我尝试使用$('[itemprop="name"]').attr('content');,但它不接受 .attr 片段。

这是现在的完整脚本,在 Col1 中返回观看日期,在 Col2 中返回标题。

/**
* Returns Trakt watchlist by username
* @param pages enter the number of pages in the list. Default is 10
* @customfunction
*/
function TRAKT(pages=10) {
    const username = `jerrylaslow`
    const maxPage = pages; 
    const reqs = [...Array(maxPage)].map((_, i) => ({ url: `https://trakt.tv/users/`+ username +`/history/all/added?page=${i + 1}`, muteHttpExceptions: true }));
    return UrlFetchApp.fetchAll(reqs).flatMap((r, i) => {
      if (r.getResponseCode() != 200) {
        return [["Values couldn't be retrieved.", reqs[i].url]];
      }
      const $ = Cheerio.load(r.getContentText());
      const ar = $(`a.titles-link > h3.ellipsify, h4 > span.format-date`).toArray();
      return [...Array(Math.ceil(ar.length / 2))].map((_) => {
        const temp = ar.splice(0, 2);
        const watchDate = Utilities.formatDate(new Date($(temp[1]).text().trim().replace(/T|Z/g, " ")),"GMT","yyyy-MM-dd");
        const title = $(temp[0]).text().trim();
        return [watchDate,title];
      });
    });
  }

这个值可以拉出来,所以我知道没有任何阻碍。

=IMPORTXML(
  "https://trakt.tv/users/jerrylaslow/history",
  "//meta[@itemprop='name']/@content")

非常感谢您的帮助。

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(1)
按点赞数排序
用户头像