grab.transport

Module Contents

Classes

Urllib3Transport

Grab network transport based on urllib3 library.

Attributes

LOG

grab.transport.LOG[source]
class grab.transport.Urllib3Transport[source]

Bases: grab.base.BaseTransport[grab.request.HttpRequest, grab.document.Document]

Grab network transport based on urllib3 library.

__getstate__() dict[str, Any][source]
__setstate__(state: collections.abc.Mapping[str, Any]) None[source]
build_pool() urllib3.PoolManager[source]
reset() None[source]
wrap_transport_error() collections.abc.Generator[None, None, None][source]
select_pool_for_request(req: grab.request.HttpRequest) urllib3.PoolManager | urllib3.ProxyManager | urllib3.contrib.socks.SOCKSProxyManager[source]
log_request(req: grab.request.HttpRequest) None[source]

Log request details via logging system.

request(req: grab.request.HttpRequest) None[source]
read_with_timeout(req: grab.request.HttpRequest) bytes[source]
get_response_header_items() list[tuple[str, Any]][source]

Return current response headers as items.

This funciton is required to isolated smalles part of untyped code and hide it from mypy

prepare_response(req: grab.request.HttpRequest, *, document_class: type[grab.document.Document] = Document) grab.document.Document[source]

Prepare response, duh.

This methed is called after network request is completed hence the “self._request” is not None.

Good to know: on python3 urllib3 headers are converted to str type using latin encoding.