powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Bash скрипт для скачивания картинок с веб-сайта
16 сообщений из 16, страница 1 из 1
Bash скрипт для скачивания картинок с веб-сайта
    #39094217
Eugene DMC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел замечательный скрипт с данного источника -
http://www.techpaste.com/2011/08/bash-script-crawl-download-images-web-page/:
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
#!/bin/bash
#Description: Images downloader
#Filename: img_downloader.sh
if [ $# -ne 3 ];
then
echo "Usage: $0 URL -d DIRECTORY"
exit -1
fi
for i in {1..4}
do
case $1 in
-d) shift; directory=$1; shift ;;
*) url=${url:-$1}; shift;;
esac
done
mkdir -p $directory;
baseurl=$(echo $url | egrep -o "https?://[a-z.]+")
curl –s $url | egrep -o "<img src=[^>]*>" | sed 's/<img src=\"\([^"]*\).*/\1/g' > /tmp/$$.list
sed -i "s|^/|$baseurl/|" /tmp/$$.list
cd $directory;
while read filename;
do
curl –s -O "$filename" --silent
done < /tmp/$$.list



Но к сожалению при выполнение команды под root пользователем, выдает Permission Denied. Подскажите в чем может быть проблема.
Код: powershell
1.
2.
3.
4.
5.
sh-3.2# ./img_downloader.sh http://www.flickr.com/search/?q=linux -d images
sh: ./img_downloader.sh: Permission denied
sh-3.2# whoami
root
sh-3.2# 
...
Рейтинг: 0 / 0
Bash скрипт для скачивания картинок с веб-сайта
    #39094267
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene DMCНашел замечательный скрипт с данного источника -
http://www.techpaste.com/2011/08/bash-script-crawl-download-images-web-page/:
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
#!/bin/bash
#Description: Images downloader
#Filename: img_downloader.sh
if [ $# -ne 3 ];
then
echo "Usage: $0 URL -d DIRECTORY"
exit -1
fi
for i in {1..4}
do
case $1 in
-d) shift; directory=$1; shift ;;
*) url=${url:-$1}; shift;;
esac
done
mkdir -p $directory;
baseurl=$(echo $url | egrep -o "https?://[a-z.]+")
curl –s $url | egrep -o "<img src=[^>]*>" | sed 's/<img src=\"\([^"]*\).*/\1/g' > /tmp/$$.list
sed -i "s|^/|$baseurl/|" /tmp/$$.list
cd $directory;
while read filename;
do
curl –s -O "$filename" --silent
done < /tmp/$$.list



Но к сожалению при выполнение команды под root пользователем, выдает Permission Denied. Подскажите в чем может быть проблема.
Код: powershell
1.
2.
3.
4.
5.
sh-3.2# ./img_downloader.sh http://www.flickr.com/search/?q=linux -d images
sh: ./img_downloader.sh: Permission denied
sh-3.2# whoami
root
sh-3.2# 



chmod u+x ./myscript.sh
...
Рейтинг: 0 / 0
Bash скрипт для скачивания картинок с веб-сайта
    #39094268
Sergey Orlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ваш запуск
img_downloader.sh http://www.flickr.com/search/?q=linux -d images
а в скрипте
mkdir -p $directory;
попробуйте прописать полный путь на директорию images
...
Рейтинг: 0 / 0
Bash скрипт для скачивания картинок с веб-сайта
    #39094317
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene DMCпри выполнение команды под root пользователемА нафига чисто юзерский скрипт запускать от рута?
...
Рейтинг: 0 / 0
Bash скрипт для скачивания картинок с веб-сайта
    #39094347
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene DMC,

0. Как правильно сказал vkle, не надо запускать скрипты из интернета от рута. Нигде, никогда и никакие. Как минимум до тех пор, пока вы не будете понимать каждый символ в этом скрипте. Хотя лучше вообще не надо.
1. У скрипта нет прав на исполнение. Надо либо дать права на исполнение как написал MasterZiv, либо запускать файл например так:
bash /path/to/img_downloader.sh
...
Рейтинг: 0 / 0
Bash скрипт для скачивания картинок с веб-сайта
    #39094474
Eugene DMC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо большое за советы. Скрипт выполняется, но выдает следующий результат:
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
bash-3.2$ ./img_downloader.sh http://www.flickr.com/search/?q=linux -d images
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (6) Could not resolve host: –s
100    72  100    72    0     0     96      0 --:--:-- --:--:-- --:--:--    96
sed: 1: "/tmp/774.list": invalid command code 7
bash-3.2$ cat /tmp/774.list
bash-3.2$ 



Сергей, подскажите как нужно правильно указать строку вместо
mkdir -p $directory; правильно ли я понимаю что нужно подставить /Users/eugenesheyko/images/ $directory;?
...
Рейтинг: 0 / 0
Bash скрипт для скачивания картинок с веб-сайта
    #39094547
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene DMC,

1. При обращении к http://www.flickr.com/search/?q=linux сразу же идёт редиректит на http s ://www.flickr.com/search/?q=linux
2. В html-странице указанному адресу ссылок на картинки по запрашиваемому ключевому слову нет.
...
Рейтинг: 0 / 0
Bash скрипт для скачивания картинок с веб-сайта
    #39094624
Sergey Orlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene DMCВсем спасибо большое за советы
Сергей, подскажите как нужно правильно указать строку вместо
mkdir -p $directory; правильно ли я понимаю что нужно подставить /Users/eugenesheyko/images/ $directory;?
img_downloader.sh http://www.flickr.com/search/?q=linux -d /Users/eugenesheyko/images
...
Рейтинг: 0 / 0
Bash скрипт для скачивания картинок с веб-сайта
    #39094759
Eugene DMC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Некоторое время вроде как скрипт отрабатывает, потом выдает следующее:
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
bash-3.2$ ./img_downloader.sh https://www.flickr.com/search/?q=linux -d /Users/eugenesheyko/images
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:29 --:--:--     0curl: (6) Could not resolve host: –s
100  227k  100  227k    0     0  55729      0  0:00:04  0:00:04 --:--:-- 55742
sed: 1: "/tmp/803.list": invalid command code 8
curl: Remote file name has no length!
curl: try 'curl --help' or 'curl --manual' for more information
GIF89a????!?,D;curl: Remote file name has no length!
curl: try 'curl --help' or 'curl --manual' for more information

bash-3.2$ cat /tmp/803.list
https://geo.yahoo.com/b?s=792600534
https://y3.analytics.yahoo.com/p.pl?js=no&a=10001109650879&b=search-photos-unified-page-view&.ys=792600534
bash-3.2$ 
...
Рейтинг: 0 / 0
Bash скрипт для скачивания картинок с веб-сайта
    #39096042
Eugene DMC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет еще раз:)
Установил параметр -x в начале скрипта, чтобы можно было отследить полное его выполнение:
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
bash-3.2$ cat img_downloader.sh
#!/bin/bash -x
#Description: Images downloader
#Filename: img_downloader.sh
if [ $# -ne 3 ];
then
echo "Usage: $0 URL -d DIRECTORY"
exit -1
fi
for i in {1..4}
do
case $1 in
-d) shift; directory=$1; shift ;;
*) url=${url:-$1}; shift;;
esac
done
mkdir -p $directory;
baseurl=$(echo $url | egrep -o "https?://[a-z.]+")
curl –s $url | egrep -o "<img src=[^>]*>" | sed 's/<img src=\"\([^"]*\).*/\1/g' > /tmp/$$.list
sed -i "s|^/|$baseurl/|" /tmp/$$.list
cd $directory;
while read filename;
do
curl –s -O "$filename" --silent
done < /tmp/$$.list
bash-3.2$ 



Скрипт вроде как отрабатывает, но выдает такое сообщение "curl: Remote file name has no length!".
Полный результат скрипта ниже.

Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
bash-3.2$ ./img_downloader.sh http://www.web-statistics.org -d images
+ '[' 3 -ne 3 ']'
+ for i in '{1..4}'
+ case $1 in
+ url=http://www.web-statistics.org
+ shift
+ for i in '{1..4}'
+ case $1 in
+ shift
+ directory=images
+ shift
+ for i in '{1..4}'
+ case $1 in
+ url=http://www.web-statistics.org
+ shift
+ for i in '{1..4}'
+ case $1 in
+ url=http://www.web-statistics.org
+ shift
+ mkdir -p images
++ echo http://www.web-statistics.org
++ egrep -o 'https?://[a-z.]+'
+ baseurl=http://www.web
+ curl $'?\200\223s' http://www.web-statistics.org
+ sed 's/<img src=\"\([^"]*\).*/\1/g'
+ egrep -o '<img src=[^>]*>'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (6) Could not resolve host: –s
100 29489    0 29489    0     0  42122      0 --:--:-- --:--:-- --:--:-- 42122
+ sed -i 's|^/|http://www.web/|' /tmp/840.list
sed: 1: "/tmp/840.list": invalid command code 8
+ cd images
+ read filename
+ curl $'?\200\223s' -O /wp-content/themes/zerif-lite/images/logo.png --silent
curl: Remote file name has no length!
curl: try 'curl --help' or 'curl --manual' for more information
+ read filename
+ curl $'?\200\223s' -O /wp-content/themes/zerif-lite/images/team1.png --silent
curl: Remote file name has no length!
curl: try 'curl --help' or 'curl --manual' for more information
+ read filename
+ curl $'?\200\223s' -O /wp-content/themes/zerif-lite/images/team2.png --silent
curl: Remote file name has no length!
curl: try 'curl --help' or 'curl --manual' for more information
+ read filename
+ curl $'?\200\223s' -O /wp-content/themes/zerif-lite/images/team3.png --silent
curl: Remote file name has no length!
curl: try 'curl --help' or 'curl --manual' for more information
+ read filename
+ curl $'?\200\223s' -O /wp-content/themes/zerif-lite/images/team4.png --silent
curl: Remote file name has no length!
curl: try 'curl --help' or 'curl --manual' for more information
+ read filename
+ curl $'?\200\223s' -O /wp-content/themes/zerif-lite/images/testimonial1.jpg --silent
curl: Remote file name has no length!
curl: try 'curl --help' or 'curl --manual' for more information
+ read filename
+ curl $'?\200\223s' -O /wp-content/themes/zerif-lite/images/testimonial2.jpg --silent
curl: Remote file name has no length!
curl: try 'curl --help' or 'curl --manual' for more information
+ read filename
+ curl $'?\200\223s' -O /wp-content/themes/zerif-lite/images/testimonial3.jpg --silent
curl: Remote file name has no length!
curl: try 'curl --help' or 'curl --manual' for more information
+ read filename
+ curl $'?\200\223s' -O /wp-content/themes/zerif-lite/images/blank-latestposts.png --silent
curl: Remote file name has no length!
curl: try 'curl --help' or 'curl --manual' for more information
+ read filename
+ curl $'?\200\223s' -O /wp-content/themes/zerif-lite/images/blank-latestposts.png --silent
curl: Remote file name has no length!
curl: try 'curl --help' or 'curl --manual' for more information
+ read filename
+ curl $'?\200\223s' -O /wp-content/themes/zerif-lite/images/map25-redish.png --silent
curl: Remote file name has no length!
curl: try 'curl --help' or 'curl --manual' for more information
+ read filename
+ curl $'?\200\223s' -O /wp-content/themes/zerif-lite/images/envelope4-green.png --silent
curl: Remote file name has no length!
curl: try 'curl --help' or 'curl --manual' for more information
+ read filename
+ curl $'?\200\223s' -O /wp-content/themes/zerif-lite/images/telephone65-blue.png --silent
curl: Remote file name has no length!
curl: try 'curl --help' or 'curl --manual' for more information
+ read filename



Все картинки с указанной веб-страницы записываются в текстовом виде в папке /tmp:
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
bash-3.2$ cat /tmp/840.list
/wp-content/themes/zerif-lite/images/logo.png
/wp-content/themes/zerif-lite/images/team1.png
/wp-content/themes/zerif-lite/images/team2.png
/wp-content/themes/zerif-lite/images/team3.png
/wp-content/themes/zerif-lite/images/team4.png
/wp-content/themes/zerif-lite/images/testimonial1.jpg
/wp-content/themes/zerif-lite/images/testimonial2.jpg
/wp-content/themes/zerif-lite/images/testimonial3.jpg
/wp-content/themes/zerif-lite/images/blank-latestposts.png
/wp-content/themes/zerif-lite/images/blank-latestposts.png
/wp-content/themes/zerif-lite/images/map25-redish.png
/wp-content/themes/zerif-lite/images/envelope4-green.png
/wp-content/themes/zerif-lite/images/telephone65-blue.png
bash-3.2$ 



Подскажите плз как возможно осуществить сохранение файлов в заново созданную папку?
...
Рейтинг: 0 / 0
Bash скрипт для скачивания картинок с веб-сайта
    #39096051
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это что за хрень непотребная нарисовалась?
Eugene DMC
Код: sql
1.
+ curl $'?\200\223s' http://www.web-statistics.org


Там должно быть "-s" (дефис эс), а не этот бредовый копипаст из ворда. Проверяйте, нет ли ещё каких сюрпризов.

Eugene DMCВсе картинки с указанной веб-страницы записываются в текстовом виде в папке /tmp:
Код: powershell
1.
bash-3.2$ cat /tmp/840.list

Неа. Это не картинки, а фрагменты ссылок на картинки. И записываются они не "в текстовом виде в папке /tmp", а в файл, который Вы читать изволите.

Eugene DMCПодскажите плз как возможно осуществить сохранение файлов в заново созданную папку?Таки прочтите код внимательно ещё раз. Именно это там и делается.
...
Рейтинг: 0 / 0
Bash скрипт для скачивания картинок с веб-сайта
    #39096052
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene DMC
Код: sql
1.
baseurl=$(echo $url | egrep -o "https?://[a-z.]+")

Явная ошибка. В классе должен быть дефис, как допустимый элемент имени домена.
Оттуда и лезет обрезка:
Код: sql
1.
+ baseurl=http://www.web
...
Рейтинг: 0 / 0
Bash скрипт для скачивания картинок с веб-сайта
    #39096364
Мутаген
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wget с ключом -p справится с задачей гораздо лучше этого дурацкого скрипта
...
Рейтинг: 0 / 0
Bash скрипт для скачивания картинок с веб-сайта
    #39096714
Eugene DMC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,

На самом деле там и указан параметр -s, а не $:
Код: powershell
1.
curl –s $url | egrep -o "<img src=[^>]*>" | sed 's/<img src=\"\([^"]*\).*/\1/g' > /tmp/$$.list

.

Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
#!/bin/bash -x
#Description: Images downloader
#Filename: img_downloader.sh
if [ $# -ne 3 ];
then
echo "Usage: $0 URL -d DIRECTORY"
exit -1
fi
for i in {1..4}
do
case $1 in
-d) shift; directory=$1; shift ;;
*) url=${url:-$1}; shift;;
esac
done
mkdir -p $directory;
baseurl=$(echo $url | egrep -o "https?://[a-z.]+")
curl –s $url | egrep -o "<img src=[^>]*>" | sed 's/<img src=\"\([^"]*\).*/\1/g' > /tmp/$$.list
sed -i "s|^/|$baseurl/|" /tmp/$$.list
cd $directory;
while read filename;
do
curl –s -O "$filename" --silent
done < /tmp/$$.list            



Подскажите где именно должен быть дефис в этой строчке -
Код: powershell
1.
baseurl=$(echo $url | egrep -o "https?://[a-z.]+")
...
Рейтинг: 0 / 0
Bash скрипт для скачивания картинок с веб-сайта
    #39096912
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene DMCvkle,

На самом деле там и указан параметр -s, а не $:
Код: powershell
1.
curl –s $url | egrep -o "<img src=[^>]*>" | sed 's/<img src=\"\([^"]*\).*/\1/g' > /tmp/$$.list

Вы это своему командному интерпретатору объясняйте. Он Вам сказал в отладчике, что там бредятина, но Вы предпочли поспорить. Со мной - не имеет смысла.

Вообще, при копипасте "фик знает откуда" часто бывают подобного рода ошибки. Проще всего перепечатать проблемное место заново.
...
Рейтинг: 0 / 0
Bash скрипт для скачивания картинок с веб-сайта
    #39103658
alexy_black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
брад галимый. я скачивал коллекцию картинок на вноый товар с сайта одной строкой по типу xsel | wget -O - | sed | wget

ну иногда небольшие вариации, например если надо переименовал файл..

Код: bash
xsel -b|wget -i - -O -|sed -rn 's/^.*"(http[^"]+.(gif|jpg|jpeg)).*/\1/p' |sed 's/thumb/full/' | wget -ci -


что-то по типу этого. но там не было двух картинок (нужных мне) указанных в одной строке исходников. (и второй сед явно не обязателен :) )
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Bash скрипт для скачивания картинок с веб-сайта
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]