.. _grab_customization:

Настройка Grab-объекта
======================

Способы задания настроек
------------------------

Вы можете изменить свойства Grab объекта различными путями.

Во-первых, вы можете передать настройки через конструктор::

    g = Grab(log_file='...', url='...')

Далее вы можете использовать метод setup::

    g = Grab()
    g.setup(log_file='...', url='...')

Самое позднее, где вы можете передать настройки, в методах, которые
инициализируют сетевой запрос::

    g.request(log_file='...')

или::

    g.go('http://...', log_file='...')

Разница между методами `go` и `request` в том, что метод `go` требует
обязательным первым параметром сетевой адрес, который в других случаях
передаётся с помощью настройки `url`. Я часто использую метод `go` т.к.
это придаёт выразительности программе.

Полный список настроек вы можете посмотреть в документе :ref:`configuration`

Клонирование
------------

Если вам нужно создать ещё один Grab объект со свойствами существующего объекта, вы можете
использовать метод :meth:`~grab.base.BaseGrab.clone`::

    g2 = g.clone()

Клонирование сохраняет кукисы, что позволяет например, залогиниться и бродить по сайту с помщью
нескольких Grab объектов. Также клонирование полезно, когда нужно запросить картинку капчи через
отдельный объект.

Также существует метод :meth:`~grab.base.BaseGrab.adopt`, который позволяет привести состояние Grab-объекта к состоянию Grab-объекта, переданного аргументом методу `adopt`.
