Прочие возможности

Ограничение тела ответа

Опцией nobody вы можете запретить принимать тело ответа. Соединение будет разорвано сразу после того, как будут получены все http-заголовки ответа.

Опцией body_maxsize вы можете управлять максимальным количеством информации, получаемой с сервера. В случае превышения указанного размера, соединение с сервером разрывается, никаких ислючений не генерируется, а данные, что были получены, доступны для работы.

Сжатие ответа

С помощью опции encoding вы можете управлять сжатием ответа сервера. По-умолчанию, значение опции равно “gzip”, что означает посылку заголовка “Accept-Encoding: gzip” и автоматическое распаковывание ответа (если он таки пришёл в загзипованном виде).

HTTP-Авторизация

С помощью опции userpwd можно передать имя пользователя и пароль для прохождения http-авторизации. Значение опции - это строка вида “username:password”

Работа с pycurl-дескриптором

Если вам нужно какая-либо возможность pycurl, интерфейс к которой отсутствует в Grab, вы можете работать с pycurl-дескриптором напрямую. Пример:

from grab import Grab
import pycurl

g = Grab()
g.curl.setopt(pycurl.RANGE, '100-200')
g.go('http://some/url')

301 и 302 редиректы

По-умолчанию, ответы со статусами 301 и 302 обрабатываются автоматически т.е. происходит переход по адресу, указанному в “Location:” заголовке ответа сервера:

HTTP/1.1 301 Moved Permanently
Content-Type: text/html
Content-Length: 174
Location: http://www.example.org/

Запретить автоматический переход можно опцией follow_location.

Meta Refresh редиректы

Один из способов перенаправить посетителя страницы на другой адрес - использование мета-тэга:

<meta http-equiv="Refresh" content="0; url=http://some/url" />

Grab может автоматически обрабатывать такой редирект. По-умолчанию, это поведение отключено. Включить его можно опцией follow_refresh.