Snscrape: как скачать лайкнутые твиты с медиа и решить ошибку SSL
Snscrape - мощный инструмент для сбора данных из Twitter (X), который не требует API-ключей. Однако пользователи часто сталкиваются с трудностями при настройке выгрузки лайкнутых записей с медиафайлами и ошибками сертификатов SSL. В этом руководстве мы разберём, как настроить snscrape для загрузки медиа из понравившихся твитов, начиная с определённого твита (по ID или дате), и как исправить распространённую проблему SSLError.
Можно ли выгружать лайкнутые твиты с медиа через snscrape?
Да, snscrape поддерживает сбор лайкнутых твитов (лайков) для любого пользователя. Для этого используется специальный модуль twitter-likes. Однако в стандартной команде snscrape twitter-user собираются только твиты самого пользователя, а не его лайки. Чтобы получить лайкнутые записи, выполните:
snscrape twitter-likes <username> > likes.txtSnscrape не умеет напрямую фильтровать твиты с медиа, но вы можете обработать полученный 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.