Benutzer-Werkzeuge

Webseiten-Werkzeuge


werkstatt:piktogramme:scraping

Scraping der Piktogramme von anderen Seiten

Mit den folgenden Javascript Snippets können die Piktogramme runtergeladen und deren zugehörigen DokuWiki formatierten Tabellen generiert werden.

Auf welchen Webseiten diese Snippets ausführbar sind wird als Rätsel dem Leser überlassen.

Automatisches Runterladen aller Piktogramme

/**
 * Diesen Codesnippet im Debugger auf der passenden BGHM Webseite ausführen und es werden alle Piktogramme automatisch runtergeladen.
 */
(() => {
    let files = [], i = 0;
    document.querySelector('#theContent').querySelectorAll('.ce-image').forEach(e => {
        let img = e.querySelector('img');
        if (img == null) return;
        files.push(img.src);
        i++;
    });
    let downloader = window.setInterval(() => {
        if (files.length == 0) {
            window.clearInterval(downloader);
            return;
        }
        let file = files.pop();
        let a = document.createElement('a');
        a.setAttribute('href', file);
        a.setAttribute('download', '');
        a.setAttribute('target', '_blank');
        console.log(`Downloading ${i - files.length}/${i}: `, file);
        a.click();
    }, 200);
})();

Generieren der Piktogrammtabellen

/**
 * Diesen Codesnippet im Debugger auf der passenden BGHM Webseite ausführen und es wird ein String mit der generierten Tabelle im DokuWiki Format zurückgegeben.
 *
 * @param {string} domain - Der Namespace der zugehörigen Piktogramme auf dem Media-Server (':werkstatt:piktogramme:' wird vorangehangen)
 * @param {number} res - Die maximale Höhe der Piktogramme in der Tabelle in Pixeln
 * @param {number} cols - Die Anzahl der Spalten der Tabelle
 */
((domain, res, cols) => {
    let entries = [], total = 0;
    document.querySelector('#theContent').querySelectorAll('.ce-image').forEach(e => {
        let img = e.querySelector('img');
        if (img == null) return;
        let desc = e.querySelector('.description').textContent.replaceAll(/\s+/g, ' ').replaceAll(/^\s+|\s+$/g, '');
        let file = decodeURIComponent(img.src.substr(img.src.lastIndexOf('/') + 1)).replaceAll(' ', '_').toLowerCase();
        entries.push(`  {{  :werkstatt:piktogramme:${domain}:${file}?x${res}  |${desc}}}**${desc}**  `);
        total++;
    });
    let table = '';
    entries.forEach((entry, i) => {
        table += '|' + entry;
        if ((i + 1) % cols === 0) {
            table += '|\n';
        }
    });
    if (total % cols !== 0) {
        table += '| '.repeat(cols - (total % cols));
        table += '|\n';
    }
    return table;
})('verbote', 150, 4);
werkstatt/piktogramme/scraping.txt · Zuletzt geändert: 2024/04/17 04:37 von alex

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki