Есть ли способ очистить файл загрузки с сайта, который не является просто HTML-ссылкой? - PullRequest
1 голос
/ 30 мая 2019

Так что я в отдельности просматриваю каждую ссылку, чтобы загрузить файл для предустановок фотошопа, это немного утомительно, если не сказать больше.Я искал способы на самом деле очистить файл, а не просто ссылку HTML или какой-нибудь способ извлечь все файлы сразу со страницы, но мне не повезло.Я не разбираюсь в python, поэтому для меня это не имеет никакого смысла, и программы, которые я установил для этого, не загружают то, что я ищу.

Я пыталсярасширения для Chrome, программное обеспечение для поиска в Интернете, но оно не сработало так, как я ищу.

https://www.brusheezy.com/brushes/22482-star-glow-brushes

это всего лишь одна из ссылок на одной странице

Я ожидаю найти что-то, что действительно загрузит zip-файл по ссылке на странице.

1 Ответ

0 голосов
/ 30 мая 2019

Примечание: я еще не заставил это работать, но подумал, что подход стоит рассмотреть. Я постараюсь вернуться и либо улучшить, либо удалить его.

Возможно, вы сможете сделать что-то подобное в инструментах разработчика браузера. Для этого вам придется отключить блокировку всплывающих окон. Это не совсем работает для меня, потому что кнопка загрузки начала вызывать диалог регистрации учетной записи. Я подозреваю, что они могут сделать это после некоторого количества загрузок, но вам, возможно, повезет больше, если у вас есть аккаунт и вы вошли в систему.

Перейдите на страницу загрузчика, откройте инструменты разработчика браузера, вставьте приведенный ниже код и нажмите Enter.

function go () {
    // get all the links from the grid on the current page
    const hrefs = Array.from(document.querySelectorAll('.ez-resource-grid a[href]')).map(a => a.href);

    // start the loading
    next(hrefs);
}

function next ([current, ...remaining]) {
    // open a new tab/window with the current href;
    const w = window.open(current, '_blank');

    // function to find the download button and "click" it.
    function triggerDownload () {
        try {
            w.querySelector('#download-button').click();
        }
        catch (e) {
            // something went wrong.
        }

        // if we haven't consumed all the links yet, start the next one.
        if (remaining.length) {
            next(remaining);

            // I tried adding a delay here thinking the account signup dialog
            // might be triggered by too many rapid requests, but it didn't
            // seem to matter.
            // setTimeout(() => next(remaining), 6000);
        }
    }

    // give the page a few seconds to load before attempting
    // to trigger the download. This should be replaced with
    // a ready event listener instead of a fixed delay, something
    // like:
    // w.document.addEventListener('readystatechange', triggerDownload)
    // but i'm tired and my first attempt didn't appear to work so i'm
    // throwing in this static delay hack instead.
    setTimeout(triggerDownload, 5000);
}

// kick it off
go();
...