Ага. Автоматизация-это ключ. Зачем утруждать себя выполнением скучных задач, если вы можете автоматизировать их? тяжелая работа+экономия времени В этом самом первом блоге я расскажу, как я автоматизирую процесс загрузки обоев с помощью сценариев Bash и некоторых регулярных выражений.
В один прекрасный день я искал минималистские обои для своей элементарной ОС. Вот идет этот сайт https://wallpaperplay.com/ у которого есть какая-то огромная коллекция обоев. Но проблема была в процессе загрузки. Это было похоже:-
- Нажмите на кнопку Скачать.
- Подождите 5 секунд (таймер).
- Нажмите на сгенерированную ссылку.
- И, наконец, щелкните правой кнопкой мыши – – – – > Сохранить изображение как.
Я подумал: кто же пройдет эти 4 этапа, чтобы скачать обои? По крайней мере, не я.
Возникает идея автоматизировать этот процесс принятия времени.
Мой подход был таким:-
- Проверьте исходный код текущей страницы.
- Извлеките из него ссылки на обои.
- Сохраните все ссылки в файл.
- Передайте файл в качестве аргумента команде wget .
Теперь это был вопрос времени, чтобы преобразовать этот подход в реальный рабочий код.
wget https://wallpaperplay.com/board/minimalist-desktop-wallpapers
Это позволит загрузить и сохранить HTML-файл с именем пути, то есть “минималистский-рабочий стол-обои”.
- Извлечение имени файла с помощью регулярного выражения из URL-адреса.
echo “$1” | grep -Eoi ‘board/.*’ | cut -d’/’ -f2
- Теперь нам нужно извлечь ссылки из загруженной HTML-страницы с помощью регулярных выражений.
кот “минималистский-рабочий стол-обои” | grep -Eoi ‘]+>’
Это позволит извлечь все HTML-якорные теги, содержащие ссылки. Здесь команда cat используется для считывания данных из файла и выдачи их содержимого в качестве выходных данных. Затем вывод перенаправляется с помощью команды pipe ” ” в команду grep . grep -Eoi ‘]+>’ Это регулярное выражение, которое извлекает якорные теги “”. Это означает “Сопоставить все, что начинается с” “кроме” > “между и до” > ” E = Extended o = Show only the matched string i = Case insensitive search
- Извлеките ссылки из атрибута href.
Это регулярное выражение извлекает значение атрибута href .Это означает “Сопоставить все, что начинается с” /| “и содержит что – либо после этого и заканчивается” . jpg “ До тех пор, пока здесь мы не получим такой вывод – /walls/full/2/5/9/20629.jpg который является относительным URL-адресом. Мы действительно не можем использовать это в качестве аргумента для команды wget . Нам нужно добавить “https://wallpaperplay.com” в начале URL-адреса, чтобы сделать его абсолютным URL-адресом.
- Превращение относительного URL-адреса в абсолютный URL-адрес.
sed ‘s/^/https://www.wallpaperplay.com/g’
Это регулярное выражение добавит “https://www.wallpaperplay.com” в начале URL. sed является потоковым редактором и в основном используется для редактирования текста. “ ^” означает в начале каждой строки. После выполнения всех этих операций у нас наконец-то есть действительный URL-адрес. Перенаправьте все ссылки на текстовый файл с помощью оператора” >” , а затем, наконец, передайте текстовый файл с помощью флага -i команде wget и -P для сохранения обоев в папке “обои”.
cat “minimalist-desktop-wallpapers” | grep -Eio ‘]+>’ | group -Eoi ‘/.*jpg’ | sed ‘s/^/https://www.wallpaperplay.com/g’ > links.txt
wget -i links.txt -P обои/
filename=$(echo “$1” | grep -Eoi ‘board/.*’ | cut -d’/’ -f2)
cat “$filename” | grep -Eio ‘]+>’ | group -Eoi ‘/.*jpg’ | sed ‘s/^/https://www.wallpaperplay.com/g’ > links.txt
wget $2 $3 -i links.txt -P обои/
rm $filename
рм links.txt