Namecheap.com - Cheap domain name registration, renewal and transfers - Free SSL Certificates - Web Hosting

Обертка для Curl : grab

Written on 21/05/2011 – 8:55 am | by webninja |

Многие (почти все) используют такую замечательную библиотеку как curl (ну, или в нашем случае pycurl), работать с ней конечно можно – но не слишком удобно. Приходится думать о разных вещах – куках, установке параметров и т.д. а ведь это время и в конечном итоге – деньги. Как правило, на определенном этапе многие пишут свои “функции” разной степени кривости облегчающие работу с curl’ом .

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

Итак, GRAB

(установка в убунте – sudo pip install grab)

Grab идеально подходит для большинства типичных задач (парсинг, регистрации), фактически освобождая программиста от рутины прямой работы с курлом и значительно сокращает размер кода. Я бы сказал, что Grab в какой-то степени эмулирует браузер (естественно без js). Итак, что внутри?

  • Отправка разных HTTP запросов
  • Обработка HTTP ответа
  • Парсинг и заполнение HTML форм
  • Работа с HTML DOM через XPath.
  • XPath для обхода html

Использование XPath сильно упрощает задачу выбора элементов, это гораздо более удобно чем иметь дело с мутными регулярками.
Более подробно про XPath - http://www.w3schools.com/xpath/default.asp

В качестве примера – простой код.

# выделяем каждый элемент td с классом "postbody"
for item in document.xpath('//td[@class="postbody"]//'):
	print item.text

Документация по Grab достаточно подробна, примеры использования тут и тут (в этих примерах граб создается в объекте parser). Как орудовать самим грабом можно посмотреть тут (парсинг форума), пример не рабочий, сразу предупреждаю, служит только для наглядной демонстрации того как можно его использовать.

Related posts:

  1. MVC модель в Python. Немного о движках шаблонов.
  2. Функции map и zip и lambda. Python
  3. Регулярные выражения в Python
  4. Как получить оригинальный URL? Python.

My blog is Do-Follow


Пишу код, делаю сайты.
Check out my about.me profile!

парсинг сайтов, форумов, интернет магазинов

Want to subscribe?

istinspring twitter account
istinspring facebook account

 Subscribe in a reader Or, subscribe via email:
Enter your email address:  
Find entries :