Cетевые транспорты

Что такое транспорт

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

Транспорт pycurl

Сайт библиотеки: http://pycurl.sourceforge.net

По-умолчанию, Grab работает с библиотекой pycurl, это python-интерфейс к библиотеке cURL. Библиотека curl поддерживает огромное количество возможностей по создания, передаче и получению HTTP-запросов. Библиотека curl не ограничена работой с HTTP-протоколом, но Grab в основном ориентирован на HTTP-протокол. Схема использования pycurl в Grab довольно проста: в аттрибуте pycurl хранится pycurl объект, который настраивается в соотвествии с заданными опциями и затем используется для передачи данных на сервер и приёма ответных данных. Интерфейс библиотеки pycurl не слишком удобный, собственно, это и было изначальной причиной написать Grab - получить человечкий интерфейс к возможностям curl.

Транспорт urllib

Cайт библиотеки: http://docs.python.org/library/urllib.html

Преимуществом этого транспорта является то, что библиотека urllib является стандартной библиотекой языка python. Разработка данного транспорта находится в зачаточном состоянии. На данный момент я попытался использовать urllib через прослойку Requests, возможно, следует отказаться от неё и соединить Grab и urllib напрямую.

Транспорт selenium

Сайт библиотеки: http://seleniumhq.org/

Преимуществом данного транспорта является то, что selenium позволяет работать с документами в режиме браузера, в том числе выполнять javascript скрипты. На данный момент транспорт seleinum находится в очень зачаточном состоянии. Пощупать можно так:

from grab import GrabSelenium

g = GrabSelenium()
g.go('http://ixbt.com')
print g.xpath_text('//title')

Ествественно вам нужно установить предварительно selenium. Это можно сделать командой: sudo pip install selenium.