Найти - Пользователи
Полная версия: Grab Spider + capcha
Начало » Data Mining » Grab Spider + capcha
1
KsimMiloff
Всем привет,
Использую Grab Spider для парсинга сайта, работу с капчой хотел отложить напоследок, но чем больше становится парсер и чем годубже он лезет в структуру ресурса, тем чаще вылетает капча (reCaptcha). Алгоритм я вижу так:
1 паук на основе initial_urls запускает task_initial для каждого url
2 далее, task_initial собирает данные со страницы и создает свои собственные таски, которые создают свои и т.д.
3 на каждом из уровней может случиться капча, поэтому проверяем ответ на наличие формы с капчой.
4 если требуется капча, то приостанавливаем паука, вырезаем картинку с капчей и отправляем ее пользователю
5 после ввода капчи пользователем, возобновляем работу паука с того же места.

Сейчас мне не понятны два последних пункта. На текущий момент, я делаю провекру на капчу, если она есть в ответе, то вырезаю картинку, но как отправить результат пользователю так, как я описал в п. 4? Как заставить паука ожидать ответа?

Спасибо.
plusplus
https://github.com/lorien/captcha_solver
Может поможет.
KsimMiloff
по-моему это совсем не то
plusplus
KsimMiloff
4 если требуется капча, то приостанавливаем паука, вырезаем картинку с капчей и отправляем ее пользователю
5 после ввода капчи пользователем, возобновляем работу паука с того же места.
Сейчас мне не понятны два последних пункта. На текущий момент, я делаю провекру на капчу, если она есть в ответе, то вырезаю картинку, но как отправить результат пользователю так, как я описал в п. 4? Как заставить паука ожидать ответа?
Что вообще подразумевается под “отправить результат пользователю”? Отобразить капчу? Если да, то есть много вариантов, например, самый простой - сохранить картинку и затем открыть папку с ней или открыть капчу с помощью какой либо программы(браузер, вьювер картинок). Посложнее, создать окно с помощью какой-либо из gui-библиотек(pyqt, tkinter, gtk) в котором будет капча и поле ввода.

Паука не надо заставлять ожидать, нужно просто поставить блокирующую операцию, например raw_input, которая будет ожидать введенный пользователем текст капчи. Пока пользователь будет вводить капчу, паук будет “ожидать”.


KsimMiloff
по-моему это совсем не то

Всё это реализовано в модуле, который я дал https://github.com/lorien/captcha_solver Пример как использовать есть тут https://github.com/lorien/captcha_solver/blob/master/captcha_solver/contrib/grab/spider.py в описании функций. Документации у модуля нет, придется покопаться в коде. У модуля 3 бекенда: antigate(распознавание капчи через сервис antigate.com), а также browser и gui(для ручного ввода капчи пользователем, твой вариант). Я тестил только browser-backend в Linux, всё работало.
KsimMiloff
Да, вы правы, при повторном расмотрении выглядит как то, что нужно. С первого раза не осилил .
Спасибо.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB