Прочие возможности¶
Ограничение тела ответа¶
Опцией 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.