使用 Cheerio 抓取 <meta> 内容
发布时间:2022-06-23 23:40:56 221
相关标签: # 脚本
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")
非常感谢您的帮助。
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报