Snscrape: как скачать лайкнутые твиты с медиа и решить ошибку SSL

    Snscrape - мощный инструмент для сбора данных из Twitter (X), который не требует API-ключей. Однако пользователи часто сталкиваются с трудностями при настройке выгрузки лайкнутых записей с медиафайлами и ошибками сертификатов SSL. В этом руководстве мы разберём, как настроить snscrape для загрузки медиа из понравившихся твитов, начиная с определённого твита (по ID или дате), и как исправить распространённую проблему SSLError.

    Можно ли выгружать лайкнутые твиты с медиа через snscrape?

    Да, snscrape поддерживает сбор лайкнутых твитов (лайков) для любого пользователя. Для этого используется специальный модуль twitter-likes. Однако в стандартной команде snscrape twitter-user собираются только твиты самого пользователя, а не его лайки. Чтобы получить лайкнутые записи, выполните:

    snscrape twitter-likes <username> > likes.txt

    Snscrape не умеет напрямую фильтровать твиты с медиа, но вы можете обработать полученный JSON-файл, отфильтровав записи по полю media (например, с помощью jq или Python). Чтобы начать сбор с определённого твита, используйте параметр --since с датой или --max для ограничения по количеству.

    Как решить ошибку SSL: CERTIFICATE_VERIFY_FAILED в snscrape

    Ошибка SSLError(SSLCertVerificationError) возникает, когда Python не может проверить сертификат сервера Twitter. Это часто случается в Windows или при устаревшей библиотеке certifi. Попробуйте следующие шаги:

    • Обновите сертификаты: выполните pip install --upgrade certifi и перезапустите терминал.
    • Переустановите snscrape: pip install --upgrade snscrape - иногда проблема решается обновлением зависимостей.
    • Укажите явный путь к сертификатам: snscrape --since 2024-02-08 twitter-likes username 2> error.log - ошибка может быть не критичной, если данные собираются.
    • Отключите проверку SSL (не рекомендуется): установите переменную среды PYTHONHTTPSVERIFY=0 перед запуском скрипта. В Windows: set PYTHONHTTPSVERIFY=0.

    Если ни один из методов не помог, обновите Python до последней версии и проверьте, установлены ли все корневые сертификаты системы.

    Как настроить snscrape для выгрузки лайков с указанного твита

    Snscrape не поддерживает прямой параметр для начала с ID твита, но вы можете использовать дату с --since. Например, чтобы собрать все лайки пользователя @example с 8 февраля 2024 года:

    snscrape --since 2024-02-08 twitter-likes example > likes_since_feb.txt

    Для фильтрации только твитов с медиа используйте парсинг JSON. Пример на Python:

    import json
    with open('likes_since_feb.txt') as f:
        for line in f:
            tweet = json.loads(line)
            if 'media' in tweet:
                print(tweet['url'])

    Если нужно начать с конкретного ID, соберите все лайки, а затем отфильтруйте по полю id или date.

    Альтернативные инструменты для скачивания лайкнутых твитов

    Если snscrape не подходит из-за ограничений или ошибок, рассмотрите другие инструменты:

    • Twint - устаревший, но всё ещё работающий инструмент для сбора твитов без API. Поддерживает лайки и медиа.
    • Twitter API v2 (через Tweepy) - официальный способ, требующий ключей разработчика, но дающий полный контроль над фильтрацией.
    • Nitter - альтернативный фронтенд Twitter, который можно парсить с помощью скриптов на Python (без ограничений SSL).

    Для разовой выгрузки можно использовать онлайн-сервисы (например, Tweet Archivist), но они не гарантируют конфиденциальность.

    Заключение

    Snscrape - гибкий инструмент для сбора лайкнутых твитов, но требует ручной фильтрации медиа и решения проблем с SSL. Используйте twitter-likes с параметром --since для начала с даты, а для обхода ошибки сертификата обновите certifi или временно отключите проверку. Если snscrape не подходит, попробуйте Twint или официальный API Twitter.

    Часто задаваемые вопросы