@haqz

Почему bash скрипт не работает?

Пытаюсь сделать скрипт, чтобы он скачал все страницы с сайта, а скачивается только первая и последняя страниц.

for i in {1 .. 24758800785707605}
do 

wget "https://hashkeys.club/92/?page=$i"
done
  • Вопрос задан
  • 144 просмотра
Решения вопроса 1
xotkot
@xotkot
хорошо есть и хорошо весьма
во первых, судя по заголовку в https://hashkeys.club/92/
total pages = 2475880078570760549798249 (1000 keys per page)

у вас предыдущие 8 порядков куда-то делись
24758800785707605
2475880078570760549798249
возможно так и задуманно, но мне кажется что всё же это не так

во вторых, без параллельной закачки ловить здесь нечего, поэтому:
rm -rf urls.txt
for i in $(seq 1 1 1000000); do echo "url=https://hashkeys.club/92/page=$i" >> urls.txt;done
curl --remote-name-all --parallel -K urls.txt

здесь указан миллион, поставьте свой диапазон, но лучше разбить по миллиону или 10 миллионов
seq 1 1 1000000
seq 1000001 1 2000000
...


но надеюсь вы осознаёте какое время и объёмы вы хотите скачать ?
у меня для 100 страниц показало:
$ curl --remote-name-all --parallel -K urls.txt
DL% UL%  Dled  Uled  Xfers  Live   Qd Total     Current  Left    Speed
--  --  10.2M     0   100     0     0 --:--:--  0:00:29 --:--:--  406k

скорость походу режет сам сервер
то есть, даже если взять ваш урезанный объём страниц в 24758800785707605 то выйдет

по времени:
24758800785707605 / (100 страниц /30 секунд) = 8252933595235868 секунд
это порядка 261698807 лет

по объёму:
24758800785707605 / (100 страниц /10 мегабайт) = 2475880078570760 мегабайт
а это порядка 2 зеттабайт !!!!!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@xibir
#!/bin/bash
for((i = 1; i <= 100; ++i)); do
   wget -O `printf '%03i' $i`.html "https://hashkeys.club/92/?page=$i"
done
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы