Чтобы получить URL-адреса всех изображений от элементов с классом image_stack__image
(при условии, что элементы этого класса являются <img>
элементами, и для обслуживания нескольких изображений, которые все имеют это имя класса), эта строка JavaScript вернет массив из src
значений атрибутов:
Array.from(document.querySelectorAll('.image_stack__image'), e=>e.src)
AppleScript автоматически преобразует это в список при использовании команды do JavaScript
в Safari .
Для cURL
всех URL-адресов в каталоге "thumbnails"
в вашей домашней папке и сохраните каждое изображение под тем же именем, что и в удаленном файле, сначала cd
в каталоге, затем cURL
с помощью --remote-name-all
опция:
cd ~/thumbnails; curl --remote-name-all %url1% %url2% ...
Предупреждение: Возможно, не загружаются изображения с необычными URL-адресами, например, изображения, которые генерируются динамически с помощью запроса CGI, или изображения, атрибут которых src
содержит данные в кодировке base64. Фактически, их наличие в запросе curl
может потенциально нарушить весь запрос.
Чтобы объединить список URL-адресов, возвращаемых методом JavaScript, чтобы вы могли вставить его прямо в cURL
, просто приведите список AppleScript в text
, используя space
в качестве разделителя:
set JS to "Array.from(document.querySelectorAll('.image_stack__image'), e=>e.src);"
set sh to {"cd ~/thumbnails;", "curl --remote-name-all"}
set the text item delimiters to space
tell application "Safari" to tell ¬
the front document to set ¬
the end of sh to ¬
do JavaScript JS
do shell script (sh as text)
Затем повторите один и тот же процесс для каждого URL-адреса веб-страницы, заключив соответствующие строки кода в цикл repeat
:
set allURLs to {%your list of URLs%}
set JS to "Array.from(document.querySelectorAll('.image_stack__image'),e=>e.src);"
set sh to {"cd ~/thumbnails;", "curl --remote-name-all", {}}
set the text item delimiters to space
tell application "Safari" to repeat with www in allURLs
set D to (make new document with properties {URL:www})
# Wait until webpage has loaded
tell D to repeat until not (exists)
delay 0.5
end repeat
set the last item of sh to do JavaScript JS in the front document
close the front document
do shell script (sh as text)
end repeat
Это скелет. Вам нужно будет заняться обработкой ошибок в ситуациях, когда URL-адреса имеют необычный формат или если веб-страница не загружается и т. Д., Но теперь у вас есть все инструменты для выполнения запрошенных вами шагов.
Кроме того, я рекомендую прочитать справочную страницу для curl
(введите man curl
в Terminal ), прочитать о параметре --remote-name-all
и найти множество других вариантов, которые могут оказаться полезными.
Но я сделаю все возможное, чтобы помочь с любыми незначительными дорожными ударами, с которыми вы столкнулись, или вопросами, связанными с тем, что я написал.