• Что это за конструкция в моделях django?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Стоит выучить Python прежде, чем браться за написанный на нём Django.
    Ответ написан
    4 комментария
  • Как засчитать зацикленность и остановить в таких случаях выполнение кода?

    @PavelMos
    Вставить счётчик перед началом while, в while увеличивать его на 1 и проверять таким образом кол-во циклов на превышение числа повторений
    Ответ написан
    1 комментарий
  • Как работает SaveFrom?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Универсальный парсер вы не сделаете, каждый сайт по разному отдает контент.
    Нужно сделать запрос на страницу с видео и попытаться найти в исходном коде прямую ссылку на видео и загружать с нее.

    Примерно выглядит все так:
    0. Если у сайта есть API - лучше будет использовать его. Если API имеется - остальные шаги не нужны (конечно, при условии наличия возможности получения прямой ссылки на видео)
    1. Открываете страницу с видео

    2. Через ctrl+U пытаетесь найти прямую ссылку на видео. Обычно она есть в коде. Если нет - пытаетесь понять как видео загружается на страницу, везде по разному. В примере с тиктоком она тут:
    лучше открыть на весь экран картинку
    Прямая ссылка
    5ef21e375ca6e910600401.jpeg

    3. Когда нашли ссылку - проверяете, нужная ли это вам. Далее нужно спарсить ее через bs4/json/re со страницы.
    4. Далее уже можно делать запрос на нее с помощью все той же requests и сохранить в файл

    Пример для тиктока
    import requests
    import json
    from bs4 import BeautifulSoup
    
    # Ссылка на полную страницу
    tiktok_url = 'https://www.tiktok.com/@golden_men_6/video/6803237854542712070'
    
    # Чтобы сайт правильно открылся
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'}
    
    
    # Запрос на страницу с видео
    r = requests.get(tiktok_url, headers=headers, allow_redirects=True)
    
    # парсинг страницы, ссылка на видео лежит в скрипте с id videoObject, который является JSON
    soup = BeautifulSoup(r.text, 'html.parser')
    script = soup.find('script', attrs={'id': 'videoObject'})
    data = json.loads(script.text)
    video_url = data['contentUrl']
    
    # запрос на прямую ссылку с видео
    r = requests.get(video_url)
    
    #запись
    with open('video.mp4', 'wb') as f:
        f.write(r.content)
    Ответ написан
    1 комментарий