Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 4, 2015 11:29:28

KsimMiloff
Зарегистрирован: 2013-10-11
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Grab Spider + capcha

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

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

Спасибо.

Отредактировано KsimMiloff (Авг. 4, 2015 11:33:47)

Офлайн

#2 Авг. 7, 2015 09:04:16

plusplus
От:
Зарегистрирован: 2009-01-05
Сообщения: 418
Репутация: +  15  -
Профиль   Отправить e-mail  

Grab Spider + capcha

https://github.com/lorien/captcha_solver
Может поможет.



Офлайн

#3 Авг. 9, 2015 18:04:37

KsimMiloff
Зарегистрирован: 2013-10-11
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Grab Spider + capcha

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

Офлайн

#4 Авг. 9, 2015 21:11:06

plusplus
От:
Зарегистрирован: 2009-01-05
Сообщения: 418
Репутация: +  15  -
Профиль   Отправить e-mail  

Grab Spider + capcha

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, всё работало.



Офлайн

#5 Авг. 10, 2015 03:13:57

KsimMiloff
Зарегистрирован: 2013-10-11
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Grab Spider + capcha

Да, вы правы, при повторном расмотрении выглядит как то, что нужно. С первого раза не осилил .
Спасибо.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version