Saturday, January 28, 2012

Обертка для Curl : grab http://ninjaside.info/2011/05/obertka-dlya-curl-grab/

http://ninjaside.info/2011/05/obertka-dlya-curl-grab/

Обертка для 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

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

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

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

No comments:

Post a Comment