我正在嘗試使用 JSON 來提取 Spotify 播放串列上的關注者。似乎各種播放串列具有不同的 HTML 資料 - 這使得它變得復雜。
這是我目前在 Google Apps Scripts 中的代碼。(@Tanaike 提供)
function SAMPLE(url) {
const res = UrlFetchApp.fetch(url).getContentText();
const v = res.match(/"followers":({[\s\S\w] ?})/);
return v && v.length == 2 ? JSON.parse(v[1].trim()).total : "Value cannot be
retrieved.";
}
這作業了大約一年,但 HTML 規范不斷變化。任何人都可以幫忙嗎?謝謝!
uj5u.com熱心網友回復:
當我看到如下網址時。
https://open.spotify.com/playlist/5aSO2lT7sVPKut6F9L6IAc
https://open.spotify.com/playlist/7qvQVDnLe4asawpZqYhKMQ
https://open.spotify.com/playlist/2Um96ZbAH1fFTHmAcpO50n
https://open.spotify.com/playlist/68jtRFcWtaFNHKO5wYLBsk
https://open.spotify.com/playlist/2phIYXF2hAd5gTj00IwXbU
https://open.spotify.com/playlist/7MBKSFzpPLQ9ryPtydXVwf
https://open.spotify.com/playlist/148My4xA7WoEaNDmnl2A8Z
https://open.spotify.com/playlist/4zMaYNXz2pP1OPGz9SIJhX
https://open.spotify.com/playlist/2hBohCkXzjzTLh6jtd7gUZ
似乎該物件已轉換為base64資料。那么在這種情況下,下面的修改腳本呢?
修改后的腳本:
function SAMPLE(url) {
const res = UrlFetchApp.fetch(url).getContentText();
const data = res.match(/id\="initial-state">([\s\S\w] ?)<\/script/);
if (!data || data.length == 0) return "Value cannot be retrieved.";
const str = Utilities.newBlob(Utilities.base64Decode(data[1])).getDataAsString();
const v = str.match(/"followers":({[\s\S\w] ?})/);
return v && v.length == 2 ? JSON.parse(v[1].trim()).total : "Value cannot be retrieved.";
}
結果:
當此腳本用于上述 URL 時,將獲得以下結果。

筆記:
- 此示例腳本適用于上述 URL。所以當你對其他 URL 進行測驗時,腳本可能無法使用。而且,當服務器端的 HTML 結構發生變化時,腳本可能無法使用。所以請注意這一點。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/435848.html
下一篇:將復選框保存到作業表的更快方法?
