В исследовании аирдропов больше всего раздражают не страницы, которые нужно листать, а внезапный редизайн сайта посреди работы: все селекторы перестают работать, скрипт тут же умирает.
Я попробовал Scrapling 0.5.1 — библиотеку для скрейпинга на Python. Все шесть пунктов пройдены; ценнее всего оказался второй.
Я вручную изменил тестовую страницу: полностью переименовал классы и обернул всё ещё в один div. Обычный CSS-селектор ничего не нашёл. Адаптивный селектор Scrapling заново нашёл элемент по identifier — 1 результат, текст совпал посимвольно.
Результаты по остальным пяти пунктам:
Обычный скрейпинг: HTTP 200, 1,73 секунды, по 10 результатов через CSS и XPath.
Spider обработал две страницы параллельно за 2,0 секунды: 20 результатов, 0 ошибок, JSON-файл успешно сохранён.
Markdown выводит 3019 символов и выглядит аккуратно — но нужно отдельно установить scrapling[rag], в базовой версии его нет.
В CLI достаточно одной команды extract — и результат готов. По пути один раз случился тайм-аут, но программа сама повторила попытку, и со второго раза всё прошло.
Режим скрытности: обычный скрейпинг JS-страницы вернул статус 200, но 0 записей за 0,7 секунды — весь контент подгружался через JS. В режиме скрытности — 200 / 10 записей за 6,3 секунды. На демонстрационной странице Cloudflare с solve_cloudflare=True — статус 200, 18 ссылок, 90,6 секунды. Медленно, но сработало — без внешнего сервиса распознавания капчи.
Сразу расскажу о двух подводных камнях:
Во-первых, собственных прокси-IP нет: если IP заблокировали, придётся самостоятельно их менять.
Во-вторых, после установки для режима скрытности может не хватать chromium-1248. Отдельный запуск python -m patchright install chromium установил его за 44 секунды.
Для чего я его использую: обычно слежу за страницами проектов в сети $BNB и объявлениями об аирдропах. Стоит странице обновиться — приходится переписывать селекторы. Эта библиотека после обновления страницы сама находит нужное место, и это экономит время на постоянной починке скриптов.
Я готов подождать 90 секунд, чтобы пройти Cloudflare.