Python. Скачать видео с сайта доступное для авторизованного пользователя
Ребят, привет.
Подвернулась мелкая работёнка.
Нужно было спарсить сайт, залогиниться на нём и скачать видео со страниц.
Спарсить - спарсил, залогиниться - залогинился, получил ссылку на скачивание. Но как скачать её, не знаю, с таким не сталкивался. Подскажите, куда копать и что юзать.
В общем сайт на протоколе https.
Авторизацию на сайте прохожу, вот так.
s = requests.Session()
def login():
s.get(HOST, proxies=PROXY_DICT)
data = {'username': LOGIN,
'pass': PASS,
'remember_me': 1,
'action': 'login',
'email_link': ELINK
}
r = s.post(HOST_AJAX_LOGIN, data=data, proxies=PROXY_DICT)
return r
Весь парсинг проходит с помощью сессии "s", для получение ссылок доступных только для авторизованных пользователей. Так-же, нужно использоваться прокси, так как сайт из моего города, увы не доступен.
Дело в том, что получив ссылку на скачивание, она не доступна для скачивания в других программах или с браузера. Каждый раз есть небольшое, на 5 знаков, отличие в ссылке. Пусть и опыта у меня нет, я предположил, что ссылка дается именно на эту сессию (или все дело в куках?).
Соотвественно, для скачивания нужно эту сессию же и использовать.
В общем, ребят. Помогите разобраться с вопросом) А то даже не знаю куда смотреть)
P.S. Пробовал сделать так (тупо), но, никакой реакции. Программа просто бесконечно пытается получить файл.
f = open(r'file.mp4', "wb")
ufr = s.get(url, proxies=PROXY_DICT)
f.write(ufr.content)
f.close()
Ответы (1 шт):
К сожалению, не имею возможности проверить свою догадку, но подозреваю, что видео отдается вам в качестве потока данных. То есть, это не цельный файл одним куском, а небольшие кусочки, посылаемые поочереди через промежутки времени.
Пример работы с такими данными есть в документации Requests.
В вашем случае, возможно, код должен быть таким:
resp = requests.get(r'https://addr/to/vidoe.mp4', stream=True)
with open(r'file.mp4', "wb") as output:
for buf in resp.iter_lines():
if buf:
output.write(buf)