ThePyzhov
@ThePyzhov
iOS Ninja

Как программно скачать несколько файлов с сайта?

Может кто подкинет информации по тому, как программно скачать с сайта несколько файлов?
Есть несколько дат и для этих дат нужно скачать файлы (для каждой даты отдельный файл).
  • Вопрос задан
  • 991 просмотр
Решения вопроса 2
Что такое "скачать файл" с точки зрения программиста? Это а) отправить http-запрос по определённому адресу и б) сохранить ответ в нужное место.
Теперь, вооруженный этим сакральным знанием, вы можете смело отправляться в поисковик, добавив к каждому из этих пунктов релевантный для вас стек технологий.
Ответ написан
Комментировать
dimonchik2013
@dimonchik2013
non progredi est regredi
wget
или cURL для продвинутых
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Mercury13
Программист на «си с крестами» и не только
1. Заполучить принцип, по которому строятся ссылки. Возможно, для этого придётся разбирать код самого сайта.
2. Использовать любую библиотеку HTTP: Indy (Delphi), cURL (DLL с большим количеством привязок) или что-нибудь другое. С другими я, к сожалению, не работал. Ну или просто запускать подходящий EXE-загрузчик (wget, curl…).
3. Обойти анти-DDoS’овские меры. Многие сети раздачи контента проверяют, похож ли клиент на легитимный браузер — наш бот должен все эти меры обойти.

Знаю, что слабость последних версий Indy — ориентация на .NET и вытекающие оттуда ограничения; также Indy «слишком вумный» и сложные REST-службы не работают, так как строишь тело, вычисляешь имитовставку — а служба говорит, что они друг другу не соответствуют; видимо, Indy что-то подстроил. Кстати, когда я понял, что запросы без тела работают, а с телом — ни в какую, первым тестом стал curl.exe, и только потом подключил libcurl через собственную Delphi-привязку.

Слабость cURL — тонкости протоколов (скажем, заголовки и кодировки) остаются за прикладными программистом; ориентирован на FILE* и на всех языках, кроме Си, запись в файл слегка затруднена; ориентирован на vararg и если работать без типобезопасной обёртки, надо быть предельно осторожным.
Ответ написан
Комментировать
TomasHuk
@TomasHuk
На python скачивал по прямым ссылкам так:
import urllib.request

# Задаем адрес в интернете
url = 'https://www.python.org/static/img/python-logo.png'
# Скачиваем файл, сохраняем его с именем logo.png
urllib.request.urlretrieve(url, "logo.png")
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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