Ratel: разработка документации
Ratel основан на urllib и selenium для реализации запросов и имитации поведения браузера. В качестве браузеров используются:
Быстрое переключение между браузерами осуществляется через cookie. Например, при публикации на форуме сначала нужно авторизоваться. Если отдельные параметры запроса трудно анализировать, можно использовать selenium для имитации входа в систему. После успешного входа cookie передаются методу запроса, что позволяет выполнять публикацию.
Рекомендуется использовать PhantomJS. Однако если некоторые веб-сайты не отображаются корректно, следует выбрать Chrome. Стоит отметить, что Chrome больше не поддерживает CentOS. Если требуется Java, рекомендуется использовать Ubuntu или попробовать другие облачные сервисы, кроме Alibaba Cloud, так как в Windows на этой платформе команда Thread.sleep может работать некорректно.
Установка
Для разработки Ratel требуется Python 3 и выше. Также необходимы следующие зависимости:
Сам Ratel устанавливается командой python setup.py install в корневом каталоге Ratel-1.0.
Структура проекта
Пакет | Описание | Модуль | Описание |
---|---|---|---|
collect | Способ сбора данных | request_basic | Реализация запросов на основе urllib |
webdriver_basic | Имитация браузера на основе selenium | ||
common | Общие модули | dict | Общий словарь, содержащий только текущий UA |
main | Главный вход | do_task | Вход для выполнения задач |
task | Задачи | task_basic | Задача |
Процесс выполнения
Начало работы
Создание класса Task для определения задачи:
Создать класс Dispose для обработки результатов задачи:
Создать Execute для выполнения задачи:
Метод использования аналогичен методу запроса, необходимо только изменить task_class в config.xml на SeleniumExecute.
Примечание: конкретные методы использования WebDriver в Selenium см. в документации: документ 1 или документ 2.
метод | параметр | описание |
---|---|---|
get_task | нет | получение задачи. Задачи могут храниться в очереди. Рекомендуется использовать многопоточность для вызова этого метода. |
do_task | нет | выполнение задачи. Внутри этого метода можно использовать потоки для вызова get_task и up_task для асинхронного получения задач для отчёта. |
up_task | нет | отчёт о задаче. Задачи могут храниться в очереди, рекомендуется использовать многопоточность для вызова этого метода. |
dispose | результат | обработка результата задачи |
end | нет | обработка после завершения задачи, например освобождение ресурсов, сохранение данных и т. д. |
Примечание: рекомендуется, чтобы размер пула был больше, чем количество задач в config.xml. Если размер пула меньше общего количества задач, то избыточные задачи будут отложены до тех пор, пока в пуле не освободится место.
header_default — заголовки запросов по умолчанию, предоставляющие заголовки для Chrome, Firefox и IE.
поле | значение по умолчанию | описание |
---|---|---|
url | нет | адрес запроса, обязательно. Адрес должен содержать http:// или https:// |
method | GET | способ запроса, поддерживает GET и POST |
header | Chrome_UA | заголовок запроса |
data | нет | параметры запроса, тип dict, этот параметр действителен только для метода POST |
cookie | нет | объект CookieJar |
proxy | нет | IP-адрес прокси |
retry_num | 3 | количество повторных попыток при возникновении исключения |
time_out | 30 | время ожидания, в секундах |
поле | значение по умолчанию | описание |
---|---|---|
response_code | нет | код ответа |
response_content | нет | содержимое ответа |
cookie | нет | файлы cookie ответа |
request_url | нет | URL запроса |
cookie | нет | CookieJar объект |
Класс Driver, создание webdriver
поле | значение по умолчанию | описание |
---|---|---|
driver_type | нет | тип webdriver, поддерживает только chrome и phantomjs, обязательно |
executable_path | нет | путь к драйверу |
headers | нет | заголовки запроса, chrome поддерживает только установку UA |
cookies | нет | куки, тип dict |
proxy | нет | прокси-сервер |
loadimgs | True | загрузка изображений, рекомендуется отключить загрузку изображений в phantomjs для ускорения запросов |
Примечание: для использования Firefox, IE или других браузеров обратитесь к соответствующей документации. Для передачи файлов cookie между двумя методами обратите внимание на преобразование их в соответствующий тип.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )