Ich habe ein JavaScript-Skript geschrieben, um YouTube ‘Später ansehen’ (Watch Later) Daten als CSV zu exportieren, und teile es hier.
Funktion: Speichert die Videoliste von der ‘Später ansehen’-Seite als CSV im Format Titel,URL.
Fehler: Die Reihenfolge ist zufällig.
Verwendung:
Gehen Sie zur ‘Später ansehen’-Seite, öffnen Sie die Chrome-Entwicklertools und kopieren Sie den folgenden Quellcode.
Hinweis: Sie sollten einige Sekunden warten, bevor Sie nur den letzten console.save(csv,'result.csv') ausführen.
function getElementsByXPath(xpath, parent)
{
let results = [];
let query = document.evaluate(xpath,
parent || document,
null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for (let i=0, length=query.snapshotLength; i<length; ++i) {
results.push(query.snapshotItem(i));
}
return results;
}
(function(console){
console.save = function(data, filename){
if(!data) {
console.error('Console.save: No data')
return;
}
if(!filename) filename = 'console.json'
if(typeof data === "object"){
data = JSON.stringify(data, undefined, 4)
}
var blob = new Blob([data], {type: 'text/json'}),
e = document.createEvent('MouseEvents'),
a = document.createElement('a')
a.download = filename
a.href = window.URL.createObjectURL(blob)
a.dataset.downloadurl = ['text/json', a.download, a.href].join(':')
e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null)
a.dispatchEvent(e)
}
})(console)
var absolutePath = function(href) {
var link = document.createElement("a");
link.href = href;
return link.href;
}
var xpath = '//*[@id="content"]/a' ;
var csv ;
for (i = 1; getElementsByXPath(xpath).length; i++) {
text = getElementsByXPath('//*[@id="content"]/a/div/h3/span')[i].getAttribute("title");
text = text.replace(/,/g, "、");
text = '"' + text + '"'
csv += text
csv += ','
// csv += "\n" ;
text = getElementsByXPath(xpath)[i].getAttribute("href")
text = absolutePath(text) ;
text = text.replace(/,/g, "、");
text = '"' + text + '"'
csv += text
// csv += ','
csv += "\n" ;
}
console.save(csv,'result.csv')
Dieses JavaScript-Programm ruft Elemente basierend auf einem bestimmten XPath-Pfad auf einer Webseite ab, extrahiert Daten aus diesen Elementen und speichert sie in einer CSV-Datei. Hier ist eine Schritt-für-Schritt-Erklärung des Programms.
-
getElementsByXPath-Funktion:- Eine Funktion, die einen XPath-Ausdruck und ein übergeordnetes Element empfängt und Elemente abruft, die dem angegebenen XPath entsprechen.
- Verwendet
document.evaluate, um den XPath auszuwerten und passende Elemente abzurufen.
-
(function(console){...})(console)-Teil:- Code zur Erweiterung der
console.save-Funktion. - Die
console.save-Funktion fügt eine benutzerdefinierte Funktion zum Speichern von Daten in einer Datei hinzu.
- Code zur Erweiterung der
-
absolutePath-Funktion:- Eine Funktion zur Konvertierung relativer URLs in absolute URLs.
- Konvertiert die gegebene relative URL mit einem
<a>-Element in eine absolute URL und gibt sie zurück.
-
xpath-Variable:- Gibt den XPath-Ausdruck an. Dieser XPath-Ausdruck dient zum Extrahieren von
<a>-Elementen auf der Seite auf eine bestimmte Weise.
- Gibt den XPath-Ausdruck an. Dieser XPath-Ausdruck dient zum Extrahieren von
-
csv-Variable:- Eine Variable zum Speichern von CSV-Daten.
-
for-Schleife:- Führt eine Schleife bis
getElementsByXPath(xpath).lengthaus. Dieser Teil ist eine Bedingung, um zu loopen, bis die Anzahl der Elemente 0 wird.
- Führt eine Schleife bis
-
Verarbeitung innerhalb der Schleife:
- Verwendet
getElementsByXPath('//*[@id="content"]/a/div/h3/span')[i].getAttribute("title"), um Titeltext vom angegebenen XPath abzurufen. - Die abgerufenen Textdaten werden als CSV-Zelle durch Kommas (
,) getrennt zurcsv-Variable hinzugefügt. Die Textdaten werden in doppelte Anführungszeichen eingeschlossen. - Verwendet
getElementsByXPath(xpath)[i].getAttribute("href"), um die relative URL des Links aus dem “href”-Attribut des Elements abzurufen. - Konvertiert die relative URL mit der
absolutePath-Funktion in eine absolute URL, schließt sie in doppelte Anführungszeichen ein und fügt sie zurcsv-Variable hinzu. - Trennt Zellen mit Kommas und fügt am Zeilenende einen Zeilenumbruch (
\n) hinzu.
- Verwendet
-
console.save(csv, 'result.csv'):- Verwendet die
console.save-Funktion, um den Inhalt dercsv-Variable als CSV-Datei herunterzuladen. Der Dateiname ist ‘result.csv’. Diese Funktion ist benutzerdefiniert und dient zum Speichern von CSV-Daten in einer Datei.
- Verwendet die
Dieses Programm ruft Titel und Links von Elementen ab, die dem angegebenen XPath entsprechen, und speichert sie in einer CSV-Datei.